Grafik

GRAFİK

C programlama dili, grafik modunda da zengin bir komut kütüphanesine sahiptir. Grafik komutları, graphics.h adlı header dosyanın altında bulunduğundan grafik programlarının başında #include<graphics.h> direktifi kullanılarak graphics.h header dosyası programa dahil edilmelidir.

A – GRAFİK MODUNA GEÇİLMESi

Bu bölüme gelinceye kadar yaptığımız bütün programlar TEXT modunda çalışırlar. TEXT modunda ekran 25 satır, 80 sütundan meydana gelmiştir. Grafik modunda ise ekran satır ve sütunlarla değil, pixel adı verilen noktalar şeklinde tanımlanmıştır. Satır ve sütun düzeninden, pixellerle tanımlanmış bir ekran düzenine geçmek için, grafik çizimleri yapan programlarda önce grafik

moduna geçilir. Böylece, ekranın TEXT modu ve GRAFİK modu olmak üzere

iki ayrı modda bulunabilecegini öğrenmiş oluyoruz. Şimdi de grafik moduyla İlgili açıklamalara geçelim,

 

Kullandığımız çeşitli bilgisayarlarda değişik özeliklerde ekranlar kullanılmaktadır. Grafik modundayken, bilgisayar ekran yönünden hassastır, başka

deyişle her grafik programı doğrudan doğruya her ekranda çalışmaz. Programın başında, grafik moduna geçilmesi ve kullanılan grafik adaptör tipi ile modunun tanımlanması gerekir.

initgraph () KOMUTU

Grafik programının başlangıcında, initgraph () komutu ile, kullanılan ekrana ait sürücü program ve ekranın duyarlılık (resolution) modu tanımlanır. Ekranlara ait sürücü programı, TURBO C komut kütüphanesinde bulunan .BGI uzantılı programdır. Bu nedenle grafik programı çalıştırılırken bu .BGI uzantılı dosyalar aktif sürücüde bulunmalıdır.

initgraph () komutunun sintaksı aşagidaki gibidir:

initgraph (grafik sürücü, grafik modu, yol);

initgraph ö komutunun parametreleri:

grafik sürücü:    grafik sürücü program, daha önce de belirtildiği gibi .BGI uzantılıdosyalarda bulunmaktadır. Aşagidaki tabloda, grafik sürücü olarak tanımlanabilecek MAKROLAR ve bunların sayısal karşılıkları görülmektedir.

 

Makro Sayısal karşılığı
DETECT 0

CGA 1

MCGA 2

EGA 3

EGA64 4

EGAMONO 5

IBM8514 6 HERCMONO 7

ATT400 8

VGA 9

PC3270 10

DETECT kullanılırsa, inîtgraph () komutu otomatik olarak mevcut ekranı ve bununla ilgili MAKRO’yu en yüksek duyarlılıkta seçer. Böylece, grafik sürücü ve duyarlılık modu en uygun şekliyle seçilmektedir.

 

grafik modu: Seçilecek grafik modu, aşağıdaki tabloda listelenenlerden bir tanesi olmalıdır.

Sürücü          Mod      Sayısal karşılığı Ekran duyarlılığı

(resolution)

CGA CGACO 0 320 x 200
  CGAC1 1 320 x 200
  CGAC2 2 320 x 200
  CGAC3 3 320 x 200
  CGAHI 4 620 x 200 ]
MCGA MCGACO 0 320 x 200 i
  MCGAC1 1 320 x 200
  MCGAC2 2 320 x 200
  MCGAC3 3 320 x 200 |
  MCGAMED 4 640 x 200 j
  MCGAHI 5 640 x 480 |
EGA EGALO 0 460 x 200 J
  EGAHI 1 640 x 350 •
EGA64 EGA64LO 0 640 x 200 f
  EGAG4H) 1 640 x 350 J
EGAMONO EGAMONOHI 0 640 x 350 f
HERC HERCMONOHI 0 720 x 348 f
ATT400 ATT400CO 0 320 x 20C f
  ATT400C1 1 320 x 200 ^H
  ATT400C2 2 320 x 200 ^H
  ATT400C3

 

3 320 x 200
  ATT400CMED 4 640 x 200
  ATT400CHI 5 640 x 400
VGA VGALO 0 640 x 200
  VGAMED 1 640 x 350
  VGAHI 2 640 x 480
PC3270 PC3270HI 0 720 x 350
IBM8514 1BM8514LO 0 640 x 480
  IBM8514HI 1 1024×768

 

 

Ekran duyarlılığı (resolution) sütununda yazılı olan değerler, ekranın pixel(nokta) olarak tanımıdır, örneğin VHAGI ekran modunun karşılığında 640*480 sayıları bulunmaktadır. Bu demektir ki VGA tipi ekranlar bu modda çalışırken bir satir 460 pixel (nokta), bir sütun ise 480 pixel’den oluşmaktadır. Aşağıdaki şekilde VGAHI modunda çalıştırılan bir VGA ekranı oluşturan noktaların koordinatları verilmektedir.

0,0                                         639,0

0.479                                       639.479

Görüldüğü gibi ilk sayı pixelin yatay koordinatı, ikinci sayı ise pixelin dikey

koordinatıdır. Sol üstteki ilk nokta 0.0 noktasıdır. En üst satırda, soldan ikinci

noktanın koordinatı ise 1,0 olur. Sağ alt köşedeki pixel’in koordinatları 639,479’dur. Böylece ekran üzerindeki herhangi bir noktanın yeri, yatay ve dikey olarak tanımlanabilmektedir,

Grafik programlarda grafik sürücüsü ve grafik modu genellikle DETECT

kullanılarak otomatik olarak tanımlanır. Yine yol ” ” (çift tırnak) ile gösterilerek, sürücü programlarının bütün dizin ve alt dizinlerde aranması sağlanır. Grafik sürücüsü ve duyarlılık modu olarak tanımlanan değişkenler İnteger tipindedir. Aşağıda, en yaygın grafik tanımlama şekli olan DETECT kullanılarak tanımlamanın sintaksı görülüyor.

int gs=DETECT, gm;

initgraph (&gs, &gm, “”);

 

Görüldüğü gibi gm değişkenine DETECT makrosu atanarak grafik sürücü

ve grafik modunun otomatik olarak en uygun şekilde kurulması sağlanmıştır.

gs ve gm değişken adlarının yerine başka değişken isimleri de kullanılabilir.

Örneğin aşağıdaki tanımlama da geçerlidir.

int a=DETECT. b;

initgraph (&a, &b, ““);

Grafik programının sonunda closegraph () komutu kullanılarak grafik mo-

du sona erdirilir.

B – Line () KOMUTU İLE ÇİZGİ ÇİZiLMESi

line () komutu başlangıç ve bitiş koordinatları tanımlanmış olan çizgilerin

çizilmesinde kullanılır. Aşağıda, line () komutunun sintaksı görülmektedir.

line (x1, y1, x2, y2);

line () komutu, kooridanatları xl, y1 olan nokta ile x2, y2 olan nokta arasına

bir çizgi çizer, xl ve x2 yatay eksendeki y1 ve y2 ise dikey eksendeki değerlerdir

x1,y1

x2,y2

 

 

Çizginin rengi setcolor () komutu ile tanımlanır. Eğer herhangi renk tanımlanmamışsa çizgi beyaz renkte olur. setcolor () komutu, parametre olarak aşağıdaki değerleri alabilir;

MAKRO SAYISAL değer RENK
BLACK 0 Siyah
BLUE 1 Mavi
GREEN 2 Yeşil
CYAN 3 Turkuaz
RED 4 Kırmızı
MAGENTA 5 Mor
BROVVN 6 Kahverengi
LIGHTGRAY 7 Açık gri
DARKGRAY 8 Koyu gri
LIGHTBLE 9 Açık mavi
LIGHTGREEN 10 Açık yeşil
LIGHTCYAN 11 Açık turkuaz
LIGHTRED 12 AÇIK KIRMIZI
LIGHTMAGENTA 13 AÇIK MOR
YELLOW 14 SARI
WHITE 15 BEYAZ

 

Örneğin. setcolor (BLUE); komutundan sonra line () komutu kullanılarak çizilen çizgi mavi renkte olacaktır. Renk tanımı sırasında setcolor () komutunun parametresi olarak makro ismi yazılabileceği gibi bu renge karşılık olan sayı da yazılabilir, örneğin setcolor (GREEN) ve setcolor (2) komutları her ikisi de YEŞÎL rengi tanımlar. Çünkü GREEN makrosunun sayısal karşılığı 2’dir. Her iki yazım şekli de geçerlidir.

Aşagıdaki program, ekrana çeşitli renk ve özelliklerde çizgiler çizer.

 /* Bu program ekrana çeşitli çizgiler çizer */

#include <stdio.h>

#include <graphics.h>

main()

{

int a=DETECT,b;

clrscr() ;

initgraph(&a,&b,””); /• grafik başlatma */

line(20,20,200.20);

setcolor(4) ;

line(20,40,200,40);

setcolor(BLUE) ;

line(20,60,200,60);

setcolor(GREEN);

setlinestyle(l,l,l);

line(20,80,200,80);

setcolor(YELLOW) ;

setlinestyle(3,l,3) ;

line(20,100,200,100);

getch() ;

closegraph();

}

Bu programda setcolor () komutu ile renk tanımı yapılmış, line () komutu

ile de çizgi çizilmiştir. Setcolor () komutu tarafından tanımlanan renk, yeni bir

setcolor () komutu ile yeni bir renk tanımlanana kadar, bütün komutlar için

geçerlidir, setlinestyle () komutu ile, çizginin kalınlığı ve özellikleri (düz, kesik,noktalı) tanımlanır, setlinestyle () komutunun parametreleri degiştirilerek çe-

şitli kalınlık ve özelliklerde çizgiler çizilebilir.

C – putpixel () KOMUTU

putpixel () komutu ile, ekranın koordinatları verilen bir yerine bir nokta konur. Yanyana noktalar konularak çeşitli çizgiler meydana getirilebilir, putpixel () komutunun sintaksı:

putpixel (x, y. r)

Bu komut, ekranın yatay düzlemde x, dikey düzlemde y koordinatıyla tanımlanan yere r ile tanımlanan renkte bir nokta koyar. Aşağıdaki programda for döngüsü kullanılarak ekrana yanyana noktalar konularak çizgiler meydana getirilmiştir.

#include <stdio.h>

#include <graphics.h>

main()

{

int a=DETECT,b,i;

clrscr() ;

initgraph{&a,&b, “”); /* grafik başlatma */

for(i=1; i<150; İ++)

putpixel(i,i,2);

for(i=1; i<200; i++)

putpixel(i,200,3);

for(i=220; İ<370;i++)

putpixel(50,i,4);

getch () ;

closegraph();

 

}

 

D – rectangle () KOMUTU ile DİKDÖRTGEN ÇİZİLMESi

rectangle () komutu, sol üst ve sağ alt koordinatları tanımlanan bir dikdörtgen çizer, rectangle () komutunun sintaksı:

 

rectangle (x1, y1, x2, y2);

Burada x1, y1, çizilecek olan dikdörtgenin sol üst köşesinin, x2 y2 ise sağ alt

köşesinin koordinatlarıdır. Aşağıdaki program, ekranın değişik yerlerine değişik renklerde iki tane dikdörtgen çizmektedir.

#include <stdio.h>

#include <graphics.h>

main() {

int a=DETECT  ,b,i;

clrscr();

initgraph(&a,&b,” “);

 

setColor(YELLOW) ;

rectangle(20,20,300,100);

setcolor(CYAN) ;

rectangle(300,150,400,450);

getch() ;

closegraph() ;

E – circle () KOMUTU İLE DAİRE ÇİZİLMESİ

circle () komutu ile, ekrana merkezinin koordinatları ve yarıçapı verilen bir

daire verilir. Yarıçapın uzunluğu pixel cinsindendir. circle () komutunun sin-

taksı aşağıdaki gibidir.

circle (x, y, r)

Burada x ve y çizilecek olan dairenin koordinatları, r ise pixel cinsinden yarıçapıdır. Aşağıdaki programda ekrana 3 daire çizilmekte ve bu dairelerden iki

tanesinin içleri çeşitli renklerde desenlemektedir.

#include <stdio.h>

#include <graphics.h>

main()

{

int a=DETECT,b,i;

 

clrscr();

initgraph(&a,&b,” “) ;

setcolor(CYAN) ;

circle(100,100,70);

setcolor(14) ;

circle(250,100,70);

setfillstyle(3,14);

floodfill(250,l00,14);

setcolor(2) ;

circle(400,100,70);

setfillstyle(1,2);

floodfill(400,100,2);

getch();

closegraph();

F • ellipse () KOMUTU KULLANILARAK ELİPS ÇİZİLMESİ

Aşağıdaki program ekrana, merkezinin koordinatlarıyla küçük ve büyük ya-

rıçapı verilen bir elips çizer.

#include <stdio.h>

#include <graphics.h>

main()

{

int a=DETECT,b,i;

clrscr();

initgraph(&a,&b, “”);

setcolor(CYAN) ;

ellipse(150,100,0,360,100,60);

setcolor(YELLOW) ;

ellipse(150,250,90,360,110,60);

getch() ;

closegraph();

}

tuna

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir