Ders17: Grafik Kullanımı
Bu kısımda sadece Turbo C derleyicisine ait basit grafik uygulamaları kısaca anlatılmıştır.
Örneklerde verilen grafik fonksiyonları ANSI de bulunmamaktadır. Bu yüzden
bir çok C derleyicisinde, kendi bünyesinde farklı grafik fonksiyonları oluşturulmuştur.
Örneğin Linux ortamındaki grafik kullanmak için
g2 kütüphanesi
geliştirilmiştir.
Grafik Ekranına Geçiş
Grafik sistemine geçmek için, initgraph() fonksiyonunu kullanmak gerekir.
Tüm çizimler sadece DOS ortamında çalışır. Grafik fonksiyonlarının kullanılması için
graphics.h başlık dosyası programın başına ilave edilmelidir.
Grafik işlemleri için temel işlemler:
#include <graphics.h> ... int surucu=DETECT,grmod; /* DETECT grafik surucusunu otomatik secer */ initgraph(&surucu,&grmod,""); /* grafik ekranını başlatır */ ... closegraph(); /* grafik ekranını kapatır */
şeklindedir.
Bazı Grafik Fonksiyonları
Bu bölümde Turbo C grafik fonksiyonlarının bazıları tanıtılmıştır.
Bunların dışında biçok fonsiyon vardır. Bu fonksiyonlar derleyicinin başvuru
kitabından öğrenilebilir.
renkler : 0-15 arasında (0-Siyah,15-mor) renk kodları ile
(yada ingilizce isimleri örneğin YELLOW gibi) tanımlıdır.
moveto(x,y); | Son noktayı (x,y) noktasına taşır |
lineto(x,y); | Son noktadan (x,y) noktasına düz bir çizgi çizer. |
line(x1,y1,x2,y2); | (x1,y1) noktasından (x2,y2) noktasına düz bir çizgi çizer. |
circle(x,y,r); | Merkezi (x,y) olmak üzere yarıçapı r olan bir çember çizer. |
arc(x,y,baş_açı,bit_açı,r); | Merkezi (x,y) noktasında ve yarıçapı r olan, baş_açı açısından dan başlayıp bit_açı açısına kadar bir yay çizer. |
ellipse(x,y,baş_açı,bit_açı,xr,yr); | Elipsin bir parçası olan yayı, merkezi (x,y) ve yarıçapları xr, yr olacak biçimde baş_açı açısındandan başlayarak bit_açı açısına kadar bir yay çizer. |
putpixel(x,y,renk); | (x,y) noktasına verilen renkte bir nokta çizer. |
rectangle(sol,üst,sağ,alt); | Sol üst köşesi (sol,üst) ve sağ alt köşesi (sağ,alt) koordinatlarında olacak şekilde bir dikdörtgen çizer. |
bar(sol,üst,sağ,alt); | İki boyutlu ve taralı bir bar çizer. |
bar3d(sol,üst,sağ,alt,derinlik,şapka); | Üç boyutlu ön yüzeyi taralı bar çizer. Şapka 0 ise barın üst kısmı çizilmez. |
setcolor(renk); | Çizilen olan şeklin rengini belirler |
setbkcolor(renk); | Arka alanın rengini belirler. |
outtext(*yazılacak ifade); | Yazılacak bir ifadenin grafik ekranında yazdırmak için kullanılır. |
outtextxy(x,y,*yazılacak ifade); | Grafik ekranında yazılacak bir ifadeyi (x,y) ile belirlenen noktadan başlayarak yazar. |
settextstyle(font,yazı yönü,yazı boyutu); | Ekranda yazılacak olan bir karakterin font'unu, yönünü ve boyutunu belirler. Yön:0 ise yatay, 1 ise dikey yazar. |
cleardevice(); | Ekranı temizler. DOS taki CLS komutu gibi. |
closegraph(); | Grafik ekranını kapatıp normal yazı ekranına döner. (DOS ekranı). |
Örnekler
Burada Bir önceki kısımda verilen fonksiyonların, bir kaç uygulaması verilmiştir.
Program 17.1 : Grafik ekranında; bir çizgi, bir çember, bir yay, bir dikdörtgen ve bir elips çizer1: /* grafik1.c 2: Bu program, bir çizgi, bir çember, 3: bir yay, bir dikdörtgen ve bir elips çizer. 4: */ 5: #include <stdio.h> 6: #include <grphics.h> 7: 8: main(){ 9: int sur=DETECT,gmode; 10: initgraph(&sur,&gmode,""); 11: 12: line(12,12,298,198); 13: circle(200,100,75) 14: arc(200,100,90,180,50); 15: rectangle(10,10,300,200); 16: ellipse(320,240,0,180,50,70); 17: 18: getchar(); 19: closegraph(); 20: return 0; 21: }
Program 17.2 : Ekranda yatay ve dikey iki yazı yazar ve farklı kalınlıkta iki çizgi çizer
1: /* grafik2.c 2: Bu program ekranda yatay ve dikey iki yazı yazar ve 3: farklı kalınlıkta iki çizgi çizer. 4: */ 5: #include <graphics.h> 6: main(){ 7: int sur=DETECT,grmode; 8: initgraph(&sur,&grmde,""); 9: 10: outtext("Merhaba C."); 11: outtextxy(30,40,"Bu yazi YATAY"); 13: 14: settextstyle(2,1,5); 15: outtextxy(50,60,"Bu yazi DIKEY"); 16: 17: setlinestyle(0,0,3); 18: line(320,240,500,350); 19: 20: setlinestyle(1,1,3); 21: circle(320,240,100); 23: }
Program 17.3 : y=f(x) ile belirlenen bir fonksiyonu çizer
1: /* grafik3.c 2: Bu program, [-20,+20] aralığında sin(x) 3: fonksiyonunun grafiğini çizer. 22: satırdaki fonksiyonu 4: değiştirerek, başka fonksiyonlar da çizilebilir. 5: */ 6: 7: #include <graphics.h> 8: #include <math.h> 9: 10: main(){ 11: int sur=DETECT,grmode; 12: float x,y,X,Y,olcek; 13: initgraph(&sur,&grmde,""); 14: 15: putpixel(320,240,5); 16: line(0,240,640,240); 17: line(320,0,320,480); 18: 19: olcek=40.0; /* Ölçek değiştirilerek zoom yapılabilir. */ 20: 21: setcolor(YELLOW); /* Fonksiyonun rengi sarı */ 22: 23: for(X=-20.0;X<=20;X+=0.01){ /* X değerleri [-20,20] aralığında */ 24: Y=sin(X); /* sin(x) fonksiyonu */ 25: x=320+X*olcek; /* Dönüşüm denklemleri */ 26: y=240-Y*olcek; 27: line(x,y,x,y); /* Fonksiyon çiziliyor... */ 28: } 29: 30: getchar(); 31: closegraph(); 32: return 0; 33: }
Hiç yorum yok:
Yorum Gönder