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 çizer
1: /* 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: }
0 Yorum:
Yorum Gönder