linux系统绘画,linux控制台下的svgalib绘图

;

#include ;

int main()

{

int i;

bool flag;

int pointx;

int pointy;

unsigned char *colors;

vga_init();

//svgalib初始化

vga_setmode(G800x600x256);

//设置屏幕的显示模式,800X600的分辨虑,256色

vga_setcolor(5);

//选用5号颜色

vga_drawline(200,300,600,100);

//用5号颜色画一条线段

vga_drawpixel(400,100);

//在坐标400,200以5号颜色画上一点

for(i=0;i<255;i++)

{

vga_setcolor(i);

vga_drawpixel(i,100);

}

vga_getch(); //按任意键继续

vga_screenoff();//关闭屏幕,你将什么都看不到

colors=(unsigned char *)malloc(800);

for(i=0;i<800;i++)

colors[i]=vga_getpixel(i,100);

//得到屏幕上纵坐标为100的线的所有点的颜色

vga_drawscanline(15,colors);

//画一条水平扫描线,不过由于已关闭屏幕,你将什么都看不到

vga_getch();//按任意键继续

vga_screenon();//打开屏幕,你将发现屏幕上多了个水平扫描线

vga_setpalette(5,20,10,15);

//改调色板,胡乱定义5号颜色为R200,G100,B150

vga_setcolor(5);

vga_drawline(200,300,700,500);

//你将看到以前的那条线的颜色也改变了,因为调色板是全局的

vga_drawscansegment(colors,100,300,50);

//画我们所得到的水平扫描线的一部分,从100,300开始50个点

//稍微来点小花样

for(i=0;i<100;i++)

{

vga_drawscansegment(colors,100+i,10+i,50);

vga_drawscansegment(colors,200-i,10+i,50);

}

for(i=0;i<100;i++)

{

vga_drawscansegment(colors,600+i/2,10+i,50);

vga_drawscansegment(colors,700-i/2,10+i,50);

}

//下面画个正弦曲线

vga_setcolor(1);

vga_drawline(10,300,700,300);

vga_drawline(680,280,700,300);

vga_drawline(680,320,700,300);

vga_drawline(400,50,400,550);

vga_drawline(380,70,400,50);

vga_drawline(420,70,400,50);

pointx=100;

pointy=300;

vga_setcolor(4);

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

{ vga_drawline(pointx,pointy,100+i,300+100*sin(i*M_PI/180));

pointx=100+i;

pointy=300+100*sin(i*M_PI/180);

}

//下面操作调色板玩玩看看

i=0;

flag=true;

while(!vga_getkey())//当没有键盘输入的时候循环

{

vga_waitretrace();

//等到射线扫描返回,此函数对防止屏幕闪烁很有用

vga_waitretrace();

//呵呵,另外一个作用就是还可以用来延时,大约1/40到1/80秒之间

vga_setpalette(4,i,i,i);

vga_setpalette(5,i,i/2,63);

if(flag)i++;

else i--;

if(i==63)flag=false;

if(i==1)flag=true;

}

vga_setmode(TEXT);//回到控制台字符模式

free(colors);

return 0;

}

[/code]

一般很多程序实际上不用svgalib的绘图部分,他们一般只是获得一个图形的入口而已.

实际应用svgalib图形库绘图的时候,其中vga_打头的函数用的不是很多,gl_打头的才是重点, 因为他能很容易实现双缓冲,卷屏的操作.呵呵,先到这里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值