C语言如何画图

画一个图形最好是写出来代码,我要全部的代码~... 画一个图形
最好是写出来代码,我要全部的代码~
展开
 我来答
百度网友f27200e
推荐于2019-11-09 · TA获得超过2.6万个赞
知道小有建树答主
回答量:390
采纳率:100%
帮助的人:6.4万
展开全部

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. \n");

  • exit(EXIT_FAILURE);

printf("xres: %d\n", info.xres);

printf("yres: %d\n", info.yres);

printf("bits_per_pixel: %d\n", 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. \n");

zhxiufan
2018-07-04 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38386
国家科技进步奖

向TA提问 私信TA
展开全部
C语言画图有专门的一个子集函数,进入图像状态就可以利用这些函数来画“点”,“线”,“圆”,“矩形”,“椭圆”等等基本图像,利用这些基本图像可以实现一个复杂图形的绘制。例如:
#i nclude<graphics.h>
void main() {
int driver,mode; driver=DETECT; mode=0; //定义变量
initgraph(&driver,&mode,""); setcolor(15); //初始化,进入图形状态
line(66,66,88,88); //画线,坐标为:(66,66)-(88,88)
lineto(100,100); //画线,坐标为:(88,88)-(100,100)
linerel(36,64); //画线,坐标为(100,100)-(136,164)
getch(); //等待按键
restorecrtmode(); //恢复到文本状态
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
隔壁的虫子
推荐于2017-10-06 · TA获得超过1336个赞
知道小有建树答主
回答量:614
采纳率:0%
帮助的人:0
展开全部
c语言是函数语言,所以画图也离不开各种图形函数:下面举几个简单的例子:
=======================================
1./*学用circle画圆形*/
#include "graphics.h"
main()
{int driver,mode,i;
float j=1,k=1;
driver=VGA;mode=VGAHI;
initgraph(&driver,&mode,"");
setbkcolor(YELLOW);
for(i=0;i<=25;i++)
{
setcolor(8);
circle(310,250,k);
k=k+j;
j=j+0.3;
}
getch();
}
2.//line画直线
#include "graphics.h"
main()
{int driver,mode,i;
float x0,y0,y1,x1;
float j=12,k;
driver=VGA;mode=VGAHI;
initgraph(&driver,&mode,"");
setbkcolor(GREEN);
x0=263;y0=263;y1=275;x1=275;
for(i=0;i<=18;i++)
{
setcolor(5);
line(x0,y0,x0,y1);
x0=x0-5;
y0=y0-5;
x1=x1+5;
y1=y1+5;
j=j+10;
}
x0=263;y1=275;y0=263;
for(i=0;i<=20;i++)
{
setcolor(5);
line(x0,y0,x0,y1);
x0=x0+5;
y0=y0+5;
y1=y1-5;
}
getch();
}
3.//用rectangle画方形
#include "graphics.h"
main()
{int x0,y0,y1,x1,driver,mode,i;
driver=VGA;mode=VGAHI;
initgraph(&driver,&mode,"");
setbkcolor(YELLOW);
x0=263;y0=263;y1=275;x1=275;
for(i=0;i<=18;i++)
{
setcolor(1);
rectangle(x0,y0,x1,y1);
x0=x0-5;
y0=y0-5;
x1=x1+5;
y1=y1+5;
}
settextstyle(DEFAULT_FONT,HORIZ_DIR,2);
outtextxy(150,40,"How beautiful it is!");
line(130,60,480,60);
setcolor(2);
circle(269,269,137);
}
===================================
更多有关c语言图形方面的函数及用法请参考c语言图形学的相关知识。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mlper_
推荐于2017-09-29 · TA获得超过8017个赞
知道大有可为答主
回答量:4863
采纳率:78%
帮助的人:1238万
展开全部
  1. C语言中提供了库函数来画圆,函数名为circle

  2. 函数的头文件为 #include<graphics.h>

  3. 函数功能: circle()使用当前绘图色并以实线画一个完整的圆。

  4. 用法:该函数调用方式为void circle(int x,int y,int radius);

  5. 说明:参数x,y为圆心坐标,radius为圆半径,用像素个素表示。注意,调用circle()函数画圆时不用当前线型。


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xyz347
2006-05-17 · TA获得超过859个赞
知道小有建树答主
回答量:1886
采纳率:100%
帮助的人:1631万
展开全部
先要图像初始化:
int gd=DETECT,gm;
initgraph(&gd,&gm,"");
然后调用一些画图函数就好了,如line,circle等.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式