ana sayfa : araştırma : java uygulamaları : grafik [ 8 / 12 ]

GERİ

8 GRAFİK

 

Javanın grafik yetenekleri ile çizgi çizmek, şekil oluşturmak , ekranda karakter tanımlamka son derece kolaydır. Bütün bu işlemler için gerekli olan metodlar Graphics sınıfı içerisinde tanımlanmışlardır. Bu nedenle appletr içerisinde bir şey çizmek istenildiğinde Graphics sınıfına ait bir örnek tanımlamak gerekmez.

 

Applet içindeki paint() metodu içerisindeki gerekli nesneleri verilmiştir.

 

Graphics sınıfı Java.awt paketinin birparçasıdır. Bu nedenlşe applet boyama yapacaksa Java  dosyasının başında bu sınıfa koda dahil edilmelidir.

 

8.1 Grafik Kordinat Sistemi

 

Ekrana bir nesneyi çizdirmek için Graphics sınıfında mevcut bir metod çağırılmalıdır. Bütün metodlar içinde başlangıç ve bitiş noktaları veya nesnenin köşeleri için argümanlar bulunur. Argümanlara koordinat sistemine uygun değer girilmelidir.

 

Java koordinat sisteminin orjini ekranın sol üst köşesidir. Pozitif x değerleri sağa doğru, y değerleri ise aşağıya doğrudur. Bütün pixel değerleri tam sayıdır.

 

8.2 Çizme ve Doldurma

 

Graphics sınıfının çizim için hazır bazı temel tipleri vardır. Örnek olarak çizgi, dikdörtgen, poligon, oval ve yay verilebilir.

 

8.3 Çizgi

 

Düz çizgi çizmek için drawline() kullanılır. Drwline dört argüman ister. Bunlar sırasıyla başlangıç ve bitiş noktalarının x ve y koordinatlarıdır.

 

8.4 Dikdörtgenler

 

Java grafik temelleri içe üç değişik dikdörtgen çizilebilir.

 

  • Düzlemsel dikdörtgenler
  • Köşeleri yuvarlatılmış düzlemsel dikdörtgenler
  • Üç boyutlu dikdörtgenler

 

Her bir dikdörtgen için iki değişik metoddan birisi seçilebilir. Bunlardan ilki dikdörtgen çerçeve çizer; diğeri ise dörtgenin içini boyar. (Tanyeri,1997)

 

Düzlemsel dörtgen çizmek için ya drawRect() ya da fillRect() metodlarından birisi seçilebilir. Her ikisinde de dört argüman bulunur. Bunlardan dörtgenin sol üst köşesinin x ve y koordinatları ile çizilecek dikdörtgenin uzunluğu ve yüksekliğidir.

 

Köşeleri yuvarlatılmış dörtgen çizmek içinse drawRoundRect() veya fillRoundRect() metodlarından birisi kullanılabilir. Bunların düzlemsel dörtgen çizmek için olanlardan farkı fazladan iki argüman gerektirmesidir. Fazladan olan argümanlar köşedeki yuvarlatılan kısmın uzunluk ve yüksekliğini verirler. Bu argümanlar düzlemsel dörtgen için olan argümanları  takip edip sırasıyla yatay ve düşey olarak ne kadarlık bir kısmın yuvarlatılacağını gösterirler. Her iki değer de birbirine eşitse köşelerdeki yuvarlatma daire şeklinde olur. (Tanyeri,1997)

 

Üç boyutlu dörtgen çiziminde ise gölgelendirme yapılarak derinlik sağlanır. Gölgelendirmeye bağlı olarak applet yüzeyinde yukarıda veya aşağıda olmaları sağlanır. Bu dikdörtgenlerde dört argüman aynen düzlemsel dörtgenlerde olduğu gibi dikdörtgeni tanımlamak için bir argümanda dikdörtgenin applet yüzeyinden yukarıda mı, yoksa aşağıda mı olduğunu belirtmek için kullanılır.

 

Beşinci argüman bool tipinde bir argüman olup true veya false değerini alır. True olduğunda dikdörtgen applet yüzeyinde yukarıda false olduğunda ise aşağıda görünür. (Tanyeri,1997)

 

8.5 Poligonlar

 

Poligonlar her hangi sayıda köşeye sahip olabilen şekillerdir. Poligon çizmek için köşelerin x ve y koordinatları ile bu köşeleri birbirine bağlayan çizgileri çizmek gerekir. Dikdörtgenlerde olduğu gibi poligon çizmek veya içini doldurmak mümkündür. Koordinatlar belirtilirken iki değişik yol izlenebilir. Bunlardan ilki x ve y değerlerini içeren dizi ikincisi ise poligon sınıfına ait örnek kullanmaktır. İlk yol kullanıldığında darawPolygon() ve fillPolygon() fonksiyonları üçer argüman içerirler. (Tanyeri,1997)

 

  • İnteger tipinde değerlerden oluşan x dizisi
  • İnteger tipinde değerlerden oluşan y dizisi
  • Toplam köşe sayısı

 

x ve y dizilerinde aynı sayıda eleman bulunmalıdır.

 

Java poligonu otomatik olarak kapatmaz. Kapalı bir eğri elde edilemek istenirse dizilerin sonuna x  ve y nin başlangıçtaki koordinatları tekrar yazılmalı veya draw yerine fill kullanılmalıdır.

 

İkinci yol ise poligon nesnesini kullanmaktır. Bu yöntem daha önce oluşturulmuş bir poligonda değişiklik yapmak için uygundur. Poligon nesnesi oluşturmak için ya boş bir poligon tanımlanır ya da girildikten sonra tanımlanır.

 

Polygon poly=new poligon();

Yukarıdaki komut boş bir poligon oluşturur daha sonra

Poly.addpoint(20,35);

Gibi bir komut kullanılarak istenilen koordinatlara nokta konur.

 

8.6 Ovaller

 

Ovaller elips veya daire çizmek için kullanılır. Dikdörtgen çizimine benzer şekilde başlangıç noktasının x ve y koordinatları ile ovalin geçeceği bölgenin uzunluk ve genişliği argüman olarak girilir. Kullanılan metodlar ise draw oval() ve filloval() dır. (Tanyeri,1997)

 

8.7 Yaylar

 

Yay ovalin bir parçasıdır. Bu nedenle çizerken de benzer şekilde düşünmek faydalı olacaktır. Drawarc() metodunda altı adet argüman bulunmalıdır.

 

  • Başlangıç noktasının x ve y koordinatı
  • Uzunluk ve genişlik
  • Yayın başlangıç açısı ve bitiş açısı gereklidir.

 

Fillarc() metodu kullanıldığında ise yay adeta bir pasta dilimi gibi çizilir. Daha öncekilerden farklı olan nokta ise burada başlangıç ve bitiş noktalarının birbiriyle değil oluşturdukları dairenin merkezi ile bağlanırlar. (Tanyeri,1997)

 

Yay çiziminde anlaşılması gereken en önemli nokta yayında tıpkı oval gibi formüle edildiği, başlangıç ve bitiş noktaları ile uzunluk ve genişliğinde yay’a değil ovale ait olduklarıdır. Yapılan ise bu şekilde formüle edilen ovalden sadece belli bir kısmının çizilerek yayın elde edilmesidir.

 

Eliptik yay çizmek nispeten daha zordur. Çünkü dairesel yay da açılar gayet kolay görülebilirken burada açıların saptanması dairedeki kadar kolay değildir. Fakat her şey tamamen aynıdır. Dairesel ve eliptik yaylar ve ovaller arasındaki tek fark eliptik yay da uzunluk ve genişliğin farklı değerler almasıdır.

Java’da yay çizmeyi şu adımlarla özetleyebiliriz: (Tanyeri,1997)

 

  • Yay bir oval dilimi olarak düşünülür.
  • Oval bütün olarak ekrana çizdirilir, bu adım gerekli değildir. Fakat yay’ın doğru başlangıç noktasından çizilmesi için bu adım oldukça yardımcı olur.
  • Başlangıç açısı tayin edilir.
  • Yayın hangi yönde ne kadar devam edeceğine karar verilir.

 

8.8 Kopyalama ve Silme

 

Programcı çizdiği şekillerden bazılarını veya tamamını silmek istediğinde Graphics sınıfının ilgili metotlarını kullanabilir. Benzer şekilde ekranın bir kısmını başka bir yere taşımak içinde metotlar vardır.

CopyArea() metodu ekrandaki dikdörtgen bir bölgeyi yine ekranda başka bir bölgeye kopyalar. Metodun uygulanması için altı argüman gereklidir. Kopyalanacak bölgenin sol üst köşesinin koordinatları , uzunluk ve genişliği ile kopyalanacak alana olan uzaklığın x ve y bileşenleri bilinmelidir. (Tanyeri,1997)

 

g.copyArea(0,0,100,100,100,0);

 

yukarıdaki komut 0/0 koordinatlarından başlayan 100 birim uzunluk ve genişlikteki kareyi 100 birim sağına kopyalar. Dikdörtgen bir bölgeyi silmek için clearRect() metodu kullanılır. Bu metod aynen drawRect() metodunda olduğu gibi dört argüman gerektirir. Metodun yaptığı seçilen bölgeyi ekranın o anki rengiyle boyamaktır. Silinmesi gereken bölgenin büyüklüğünü tespit etmek için size() kullanılır. (Tanyeri,1997)

 

g.clearRecht(0,0,size().width,size().height);