c绘图代码
『壹』 c语言绘图
试验发现还可以呀。
如果你的图形很复杂,可以考虑用函数getimage()和putimage();先用getimage()把一定的图形读入内存保存起来,然后在需要的时候再调用putimage()显示出来。这样画面动画就显得比较平滑。
你可以查这两个函数,也可以在网上找到使用它们的实例,对于处理比较复杂实时性要求较高的动画程序这个是比较有效的。
『贰』 求解C语言绘图,解释以下代码
注解写得那么详细,请问哪里不懂了。。
『叁』 c语言绘图代码
看下这背景可以吧
『肆』 C语言画图 程序解析
你这是C++的代码,而抄且用的是Win32的代码,里面会有很多窗体函数API,你只复制了一部分,简单的来说,C++里,话图是用的类,
CPaintDC dc(this); 建立了一个CPaintDC对象dc,然后通过操作这个对象来完成一些图案,就是下面的dc.MoveTo( 20, 20);
dc.LineTo( 20,420);
dc.MoveTo( 20,420);
dc.LineTo(820,420);
dc.MoveTo( 20,420);
dc.LineTo(820, 20);
上面是连线,
dc.Ellipse(x-1+20, 420-y-1, x+1+20, 420-y+1);
这是画椭圆,
你这段代码是复制了一部分,而CPaintDC对象属于谁,应该在头文件里,具体信息,可以查C++类库大全
『伍』 使用C语言编程画图
换账号再来回答,veket的小号。。。
.......用了ege图形库.........纯体力活.........
源代码....demo.cpp.....
/////////////////////////////////////////
// ege0.3.8
// MinGW g++3.4.2
// veket的小号
/////////////////////////////////////////
#include"graphics.h"
#include<stdio.h>
constintYLEN=50;
constintXLEN=40;
constintWIDTH=10*XLEN;
constintHEIGHT=2*YLEN;
constintXWIDTH=640;
constintYHEIGHT=480;
intmain()
{
intx1,y1,x2,y2,x,y;
charstrbuf[100];
inti;
setinitmode(0);
initgraph(XWIDTH,YHEIGHT);
setbkcolor(RGB(0xcc,0xcc,0xcc));
setfillstyle(RGB(0xff,0xff,0xff));
x2=x1=(getmaxx()-WIDTH)/2;
y1=(getmaxy()-2*HEIGHT-YLEN)/2;
y2=y1+HEIGHT+YLEN;
bar(x1,y1,x1+WIDTH,y1+2*YLEN);
setcolor(RGB(0x04,0x04,0x04));
rectangle(x1,y1,x1+WIDTH,y1+2*YLEN);
outtextxy(x1-20,y1-10,"1");
outtextxy(x1-20,y1-10+YLEN,"0");
outtextxy(x1-20,y1-10+2*YLEN,"-1");
for(x=x1,y=y1+2*YLEN+10,i=0;x<=x1+WIDTH;x+=2*XLEN,i+=2)
{
sprintf(strbuf,"%d ",i);
outtextxy(x,y,strbuf);
}
for(x=x1;x<x1+(int)(3*PI*XLEN);x++)
{
y=y1+YLEN-(int)(YLEN*sin(1.0*(x-x1)/XLEN)+0.5);
putpixel(x,y,RGB(0x3e,0x3e,0xff));
}
bar(x2,y2,x2+WIDTH,y2+2*YLEN);
rectangle(x2,y2,x2+WIDTH,y2+2*YLEN);
outtextxy(x2-20,y2-10,"1");
outtextxy(x2-20,y2-10+YLEN,"0.5");
outtextxy(x2-20,y2-10+2*YLEN,"0");
for(x=x2,y=y2+2*YLEN+10,i=0;x<=x1+WIDTH;x+=2*XLEN,i+=2)
{
sprintf(strbuf,"%d ",i);
outtextxy(x,y,strbuf);
}
for(x=x2;x<x2+(int)(PI*XLEN);x++)
{
y=y2+2*YLEN-(int)(2*YLEN*sin(1.0*(x-x1)/XLEN)+0.5);
putpixel(x,y,RGB(0x3e,0x3e,0xff));
}
for(x=x2+(int)(2*PI*XLEN);x<x2+(int)(3*PI*XLEN);x++)
{
y=y2+2*YLEN-(int)(2*YLEN*sin(1.0*(x-x1)/XLEN)+0.5);
putpixel(x,y,RGB(0x3e,0x3e,0xff));
}
getch();
closegraph();
return0;
}
『陆』 C语言实现画图功能
tc/bc在dos下自带图形驱动,可以使用graphics.h 头文件调用标准C函数,如果坚决不用,请使用系统功能调用,自己编写绘图功能,DOS下使用int86()函数实现功能调用。有,你可以参考:
支持SVGA的高分辨率绘图通过调用中断 10h的4f功能来实现
主要分辨率设置代码
unsigned char set_SVGA_mode(int vmode)
{union REGS r;
r.x.ax=0x4f02;
r.x.bx=vmode;
int86(0x10,&r,&r);
return(r.h.ah);
}
void hide_text_cursor(void)
{union REGS r;
r.h.ah=1;
r.h.ch=32;
int86(0x10,&r,&r);
}
void selectpage(register char page)
{union REGS r;
r.x.ax=0x4f05;
r.x.bx=0;
r.x.dx=page;
int86(0x10,&r,&r);
}
void show_text_cursor(char size)
{union REGS r;
r.h.ah=1;
r.h.cl=size;
r.h.ch=7;
int86(0x10,&r,&r);
}
unsigned int get_SVGA_mode()
{union REGS r;
r.x.ax=0x4f03;
int86(0x10,&r,&r);
return(r.x.bx);
}
windows下本来就是图形界面,随便可以画,有关的概念是:Canvas,brush,color等类/参数,DrawLine/DrawArc函数/方法。
『柒』 C语言如何画图
framebuffer(帧缓冲)。
帧的最低数量为24(人肉眼可见)(低于24则感觉到画面不流畅)。
显卡与帧的关系:由cpu调节其数据传输速率来输出其三基色的配比。
三基色:RGB(红绿蓝)。
在没有桌面和图形文件的系统界面,可以通过C语言的编程来实现在黑色背景上画图!
用下面的代码,在需要的地方(有注释)适当修改,就能画出自己喜欢的图形!
PS:同样要编译运行后才能出效果。
#include <stdio.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <linux/fb.h>
#include <stdlib.h>
#define RGB888(r,g,b) ((r & 0xff) <<16 | (g & 0xff) << 8 | (b & 0xff))
#define RGB565(r,g,b) ((r & 0x1f) <<11 | (g & 0x3f) << 5 | (b & 0x1f))
int main()
{
int fd = open("/dev/fb0", O_RDWR);
if(fd < 0){
perror("open err. ");
exit(EXIT_FAILURE);
printf("xres: %d ", info.xres);
printf("yres: %d ", info.yres);
printf("bits_per_pixel: %d ", info.bits_per_pixel);
size_t len = info.xres*info.yres*info.bits_per_pixel >> 3;
unsigned long* addr = NULL;
addr = mmap(NULL, len, PROT_WRITE|PROT_READ, MAP_SHARED, fd, 0);
if(addr == (void*)-1){
perror("mmap err. ");
『捌』 C语言绘图
cleardevice清除的不仅仅是当前的页吧
将你的cleardevice();
改为clearviewport();
经测试绝无闪烁
『玖』 C语言绘图程序
最简单的是使用GDI画图~
『拾』 求一份用C语言绘图的程序
Turbo C提供了图形函数的,所有图形函数均在graphics.h中。在编程之前你要把Options/Linker中的Graphics lib选为on,只有这样才能保证正确使用图形函数。
给你一个我以前做实验画“22”的例子吧
#include<graphics.h> 头文件一定要有
int x0,y0,nflag[90][70];
void Writechar(int nflag[90][70])
{
int i,j;
for(i=0;i<90;i++)
{
for(j=0;j<70;j++)
if(nflag[i][j]==1)
putpixel(i,j,1);
else
putpixel(i,j,2);
}
}
void Setchar(int nflag[90][70])
{
int i,j;
for(i=0;i<90;i++)
for(j=0;j<70;j++)
nflag[i][j]=0;
for(i=0;i<90;i++)
for(j=0;j<70;j++)
{ //fist"2"
if((j>6&&j<13)&&(i>8&&i<35))
{
nflag[i][j]=1;
}
if((j>6&&j<33)&&(i>28&&i<35))
{
nflag[i][j]=1;
}
if((j>26&&j<33)&&(i>8&&i<35))
{
nflag[i][j]=1;
}
if((j>26&&j<53)&&(i>8&&i<15))
{
nflag[i][j]=1;
}
if((j>46&&j<53)&&(i>8&&i<35))
{
nflag[i][j]=1;
}
//second "2"
if((j>6&&j<13)&&(i>44&&i<71))
{
nflag[i][j]=1;
}
if((j>6&&j<33)&&(i>64&&i<71))
{
nflag[i][j]=1;
}
if((j>26&&j<33)&&(i>44&&i<71))
{
nflag[i][j]=1;
}
if((j>26&&j<53)&&(i>44&&i<51))
{
nflag[i][j]=1;
}
if((j>46&&j<53)&&(i>44&&i<71))
{
nflag[i][j]=1;
}
}
}
int main()
{
int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"c:\\tc3\\bgi"); 这里的路径自己改
Setchar(&nflag);
Writechar(&nflag);
getch();
closegraph();
return 0;
}
与我这个程序大致一样 你只要设计好你的图的算法就行了
不懂得函数你可以网络一下就知道了
好了 为了给你解答我把N久不用的资料都翻出来看了 呵呵