11. Grafik:
Basit grafik işlemleri nasıl gerçekleştirilir (sorumlu değiller).
Normal çalışma anında text ekranda (25, 80) boyutlarında.
* void textbackground(int newcolor); : alt zemin rengi
* void textcolor(int newcolor); : yazı rengi
* void textattr(int newattr); 8 bitlik sayı. hem alt zemin hem de yazı rengi
verilir Bbbbffff (B = blink)
* void highvideo(void); Yazı parlaklığı
* void lowvideo(void);
* void normvideo(void);
Bu işlevler doğrudan ekrana yazan deyimlere yöneliktir (cprintf, cput)
#include <conio.h>
main()
{
int i;
textbackground(BLACK);
clrscr();
for (i=0; i<=15;i++) {
textcolor(i);
cputs("HÜSEYİN PEKTAŞrn");
}
getch();
}
Grafik çizimi için bilgisayarın grafik modunda olması gerekir.
/*
* void far initgraph(int far *graphdriver, int far *graphmode, char far *pathtodriver);
Grafik sistemini verilen degerlere gore ayarlar. Grafik komutlarini kullanmadan once calistirilmalidir.
* closegraph; Grafik sistemini kapatir.
* graphresult: int; Grafik islemi ile ilgili bilgi verir.
* char *far grapherrormsg(int errorcode); Belirtilen grafik hatasi icin mesaji verir.
* line(x1, y1, x2, y2);
* lineto(x, y); Bulunulan yerden (x,y) ye kadar çizer
* linerel(x, y); Bulunulan yerin (x,y) ötesine kadar çizer
* moveto(x, y);
* void far cleardevice(void); Grafik ekranını siler
* circle(x, y , r);
* putpixel(x, y, renk);
* getpixel(x, y); Belirtilen noktanin piksel degerini verir
* getx; Bulunulan
* gety; noktalar
* getmaxx; Maksimum olabilecek
* getmaxy; noktalar
* outtext(char far *) : Bulunulan yere metni yazar
* outtextxy(x, y, char far *) : Belirtilen yere metni yazar
* int far getcolor(void); : çizim rengi öğren
* void far setcolor(int color); : çizim rengini değiştir
* int far getbkcolor(void); : alt zemin rengini öğren
· void far setbkcolor(int color);: alt zemin rengini değiştir
EGA_BLACK
EGA_BLUE
EGA_GREEN
EGA_CYAN
EGA_RED
EGA_MAGENTA
EGA_LIGHTGRAY
EGA_BROWN
|
0
1
2
3
4
5
7
20
|
EGA_DARKGRAY
EGA_LIGHTBLUE
EGA_LIGHTGREEN
EGA_LIGHTCYAN
EGA_LIGHTRED
EGA_LIGHTMAGENTA
EGA_YELLOW
EGA_WHITE
|
56
57
58
59
60
61
62
63
|
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
main()
{
int gd, gm, hata;
int x, y;
gd = DETECT; /* ekran sürücüsünü otomatik tanı */
/* CGA, HERC, VGA..*/
initgraph(&gd, &gm, "c:dillertc3bgi");
/* gd gm
VGA ¦ VGALO ¦ 0 ¦ 640 x 200 ¦ 16 color¦ 2
9 ¦ VGAMED ¦ 1 ¦ 640 x 350 ¦ 16 color¦ 2
¦ VGAHI ¦ 2 ¦ 640 x 480 ¦ 16 color¦ 1
*/
hata = graphresult();
if (hata != grOk) /* grOk = 0 tanımlı */
{
printf("Grafik hatası: %sn", grapherrormsg(hata));
getch();
exit(1);
}
x = getmaxx();
y = getmaxy();
setbkcolor(EGA_RED);
setcolor(EGA_YELLOW);
cleardevice();
line(0, 0, 0, y);
line(0, y, x, y);
line(x, y, x, 0);
line(x, 0, 0, 0);
getch();
cleardevice();
moveto(50, 50);
lineto(50, 100);
lineto(100,100);
lineto(100,50);
lineto(50, 50);
getch();
closegraph();
}
Örnek 11.1: İşlev çizimi
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
double fonk(double x);
double fonk1(double x);
main()
{
int gd, gm, hata;
double x, y;
int orgx, orgy;
gd = DETECT;
initgraph(&gd, &gm, "c:dillertc3bgi");
hata = graphresult();
if (hata != grOk)
{
printf("Grafik hatası: %sn", grapherrormsg(hata));
getch();
exit(1);
}
orgx = 20;
orgy = getmaxy() / 2;
line(0, orgy, getmaxx(), orgy); /* x ekseni */
line(20, 0, 20, orgy+50); /* y ekseni */
outtextxy(getmaxx()-50, orgy-10, "Zaman");
outtextxy(22, 0, "Volt");
for (x = 0; x< 6.28; x = x + 0.005) {
y = fonk1(x);
putpixel(orgx + 80*x, orgy - y, 2); /* renk yeşil EGA_GREEN*/
/* - çünkü eksenin üzerinde çizsin */
}
getch();
closegraph();
}
double fonk(double x)
{
double y;
y = 100 * sin(10 * x);
return y;
}
double fonk1(double x)
{
double y;
y = 1 - exp(-x);
return 200*y;
}