⑴ 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语言编程画图
换账号再来回答,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语言怎么画图啊
Turbo C提供了非常丰富的图形函数, 所有图形函数的原型均在graphics. h中, 本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图形窗口以及图形模式下的文本输出等函数。另外, 使用图形函数时要确保有显示器图形驱动程序*BGI, 同时将集成开发环境Options/Linker中的Graphics lib选为on, 只有这样才能保证正确使用图形函数。由于种类比较多,所以下面仅列举2个例子,抛砖引玉→
1.点
void far putpixel(int x, int y, int color);
2.线
void far line(int x0, int y0, int x1, int y1); 画一条从点(x0, y0)到(x1, y1)的直线。
void far lineto(int x, int y); 画一作从现行游标到点(x, y)的直线。
void far linerel(int dx, int dy); 画一条从现行游标(x, y)到按相对增量确定的点(x+dx, y+dy)的直线。
void far circle(int x, int y, int radius); 以(x, y)为圆心, radius为半径, 画一个圆。
c语言的图形部分是很有意思的,也是c中最精彩的内容之一,希望你能很快享受它的乐趣。
⑷ 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语言如何画图
c语言画图 要选对 C语言编程工具。 目前最方便的是“习语言”,它能编译所有C代码,又能在C代码中使用它支持的绘图函数。
也可以使用二十年前的C语言编程工具来绘图,通常是在DOS窗口中绘图。
⑹ c语言结构体画图
就是定义一个班级结构体,里面有班号,老师和学生,学生又是一个结构体,有年龄,性别,名字等属性。不知道满不满足你的要求
⑺ C语言画图问题!
我都很久没用C语言的画图函数了,像画圆,画正方形,画直线,都有函数的,只不过那时候我用的编译器是win-tc,严格来讲画图这一部分不属于C语言,只是相对于编译器来说,比如想画直线就用line函数,比如我要画一个直线就是如下语句:line(100,100,200,200);我想你应该能理解函数里参数的意思这些画图函数,现在对我来讲真的一点用处都没有,但我并不否认它,我现在用的VC6,C++语言。我想不会有谁用win-tc来写个软件,用那些画图函数来构成软件界面。先不管能不能实现,即使能实现,那也将是一项无比浩大的工程。我觉得应该直接用API函来进行画图,比如画直线什么的。但是你是初学,学一下TC下的画图函数也并不无好处。至少你了解是怎么画图,屏幕的坐标是怎样算的。TC我不常用,如果你想要例子,我倒是有WIN—TC下的例子,像计算器,小游戏什么的代码。我觉得还是得亲自实验才能明白,理论怎么比不上实践不是吗?记得不太清楚的,好像如果你下了WIN—TC的话,这个编译器自带了个函数使用大全的东西,里面和各种函数使用的简单例子,你自己去找找吧。你如果想要代码,就跟我说一下。是win-tc下的。
⑻ 怎么用C语言设计画图程序
使用图形函数时要确保有显示器图形驱动程序*BGI,同时将集成开发环境options/Linker中的Graphics lib选为on,只有这样才能保证正确使用图形函数。
#include <stdio.h>
#include <graphics.h>
main()
{
int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"") ;
line(30,50,500,50);/*画一条直线*/
circle(200,200,20); /*画圆*/
getch();
cleardevice();
closegraph();
}
⑼ 如何用C语言软件画图
matalab是我所知比较好的数学关系处理软件(当然简单一些的用excel就绰绰有余了),C语言软件中turbo-c显得就力不从心了,而且要进行比较复杂的编程语言转换,这个对于初学者太抽象了(命令式,可以类比于dos了··),如果你还是想借助c语言类软件的话,推荐用图形界面的软件,VB适于初学者,在之后可以选择学习VC(其中VC就已经足够强大了),另外要开发用于手机上的程式,就要学习java了··
(其他工具软件autoCAD也行,立体建模使用3d max 或者玛雅··)
以上仅供参考,希望对您有所帮助
⑽ 如何用c语言画图,举几个最简单的例子
首先需要绘图函数的头文件在TC2.0中是graphics.h
然后需要初始化图形模式.
在利用绘图函数
矩形:bar
圆形:circle
直线:line
等等。你可以到graphics.h文件中去看这些函数的参数
举个例子
#include <stdio.h>
#include <graphics.h>
int main(void)
{
int gdriver; /*图形驱动器*/
int gmode; /*图形驱动模式*/
gdriver = DETECT; /*自动检测硬件,已确定图形驱动器*/
initgraph(&gdriver,&gmode,\"\");初始化图形设备
setbkcolor(BLUE); /*设置屏幕背景颜色为蓝色*/
circle(getmaxx() / 2,getmaxy() / 2,100); /*在屏幕中间绘制一个半
为100的圆*/
closegraph(); /*关闭图形模式*/
return(0);
}