20 Ocak 2015 Salı

C'de grafik fonksiyonları

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