c语言的绘图
‘壹’ 在c语言环境(TC2.0)下开发绘图程序
#include<stdio.h>
#include<graphics.h>
main()
{ int gdriver,gmode;
gdriver=DETECT;
initgraph(&gdriver,&gmode,"");
setcolor(BLUE);
setfillstyle(1,RED);
pieslice(250,250,0,45,200);
setfillstyle(1,GREEN);
pieslice(250,250,45,90,200);
setfillstyle(1,BLUE);
pieslice(250,250,90,135,200);
setfillstyle(1,CYAN);
pieslice(250,250,135,180,200);
setfillstyle(1,BROWN);
pieslice(250,250,180,225,200);
setfillstyle(1,LIGHTGRAY);
pieslice(250,250,225,270,200);
setfillstyle(1,YELLOW);
pieslice(250,250,270,315,200);
setfillstyle(1,MAGENTA);
pieslice(250,250,315,360,200);
getch();
closegraph();
}
(一) 像素函数
56. putpiel() 画像蔽陵派素点函数
57. getpixel()返回像素色函数
(二) 直线和线型函数
58. line() 画线函数
59. lineto() 画线函数
60. linerel() 相对画线函数
61. setlinestyle() 设置线型函数
62. getlinesettings() 获取线型设置函数
63. setwritemode() 设置画线模式函数
(三)、多边形函数
64. rectangle() 画矩形函数
65. bar() 画条函数
66. bar3d() 画条块函数
67. drawpoly() 画多边形函数
(四)、 圆、弧和曲线函数
68. getaspectratio()获取纵横比函数
69. circle()画圆函数
70. arc() 画圆弧函数
71. ellipse()画椭圆弧函数
72. fillellipse() 画椭圆区函数
73. pieslice() 画扇区函数
74. sector() 画椭圆扇区函数
75. getarccoords()获取圆弧坐标函数
(五)、 填充函数
76. setfillstyle() 设置填充图样和颜色函数
77. setfillpattern() 设置用户图样函数
78. floodfill() 填充闭域函数
79. fillpoly() 填充多边形函数
80. getfillsettings() 获取填充设置函数
81. getfillpattern() 获取用户图样设置函数
(六)、图像函数
82. imagesize() 图像宏贺存储大小函数
83. getimage() 保存图像函数
84. putimage() 输出图像函数
四、图形和图像函数
对许多图形应用程序,直线汪液和曲线是非常有用的。但对有些图形只能靠操作单个像素才能画出。当然如果没有画像素的功能,就无法操作直线和曲线的函数。而且通过大规模使用像素功能,整个图形就可以保存、写、擦除和与屏幕上的原有图形进行叠加。
(一) 像素函数
56. putpixel() 画像素点函数
功能: 函数putpixel() 在图形模式下屏幕上画一个像素点。
用法: 函数调用方式为void putpixel(int x,int y,int color);
说明: 参数x,y为像素点的坐标,color是该像素点的颜色,它可以是颜色符号名,也可以是整型色彩值。
此函数相应的头文件是graphics.h
返回值: 无
例: 在屏幕上(6,8)处画一个红色像素点:
putpixel(6,8,RED);
57. getpixel()返回像素色函数
功能: 函数getpixel()返回像素点颜色值。
用法: 该函数调用方式为int getpixel(int x,int y);
说明: 参数x,y为像素点坐标。
函数的返回值可以不反映实际彩色值,这取决于调色板的设置情况(参见setpalette()函数)。
这个函数相应的头文件为graphics.h
返回值: 返回一个像素点色彩值。
例: 把屏幕上(8,6)点的像素颜色值赋给变量color。
color=getpixel(8,6);
(二) 直线和线型函数
有三个画直线的函数,即line(),lineto(),linerel()。这些直线使用整型坐标,并相对于当前图形视口,但不一定受视口限制,如果视口裁剪标志clip为真,那么直线将受到视口边缘截断;如果clip为假,即使终点坐标或新的当前位置在图形视口或屏幕极限之外,直线截断到屏幕极限。
有两种线宽及几种线型可供选择,也可以自己定义线图样。下面分别介绍直线和线型函数。
58. line() 画线函数
功能: 函数line()使用当前绘图色、线型及线宽,在给定的两点间画一直线。
用法: 该函数调用方式为void line(int startx,int starty,int endx,int endy);
说明: 参数startx,starty为起点坐标,endx,endy为终点坐标,函数调用前后,图形状态下屏幕光标(一般不可见)当前位置不改变。
此函数相应的头文件为graphics.h
返回值: 无
例: 见函数60.linerel()中的实例。
59. lineto() 画线函数
功能: 函数lineto()使用当前绘图色、线型及线宽,从当前位置画一直线到指定位置。
用法: 此函数调用方式为void lineto(int x,int y);
说明: 参数x,y为指定点的坐标,函数调用后,当前位置改变到指定点(x,y)。
该函数对应的头文件为graphics.h
返回值: 无
例: 见函数60.linerel()中的实例。
60.linerel() 相对画线函数
功能: 函数linerel() 使用当前绘图色、线型及线宽,从当前位置开始,按指定的水平和垂直偏移距离画一直线。
用法: 这个函数调用方式为void linerel(int dx,int dy);
说明: 参数dx,dy分别是水平偏移距离和垂直偏移距离。
函数调用后,当前位置变为增加偏移距离后的位置,例如,原来的位置是(8,6),调用函数linerel(10,18)后,当前位置为(18,24)。
返回值:无
‘贰’ 关于C语言绘图问题.
不同的C有不同的绘图函数。头文件名和库名也不同。
VC++中用MFC, CDC类中有绘图函数,三维用opengl绘图函数。纯C可用GLUT画二维三维没野图。
例如:
画直线,画弧:
pDC->MoveTo(50,50); pDC->LineTo(50,200);
pDC->Arc(50,50,150,150,100,50,100,50);
画涂色的椭圆辩察迟
pDC->SelectObject(aBrush);
pDC->携李Ellipse(350,50,450,150);
画3维多边形:
glBegin(GL_POLYGON);
glNormal3f(cube_n[5][0],cube_n[5][1],cube_n[5][2]);
glVertex3f(cube_v[5][0],cube_v[5][1],cube_v[5][2]);
glNormal3f(cube_n[1][0],cube_n[1][1],cube_n[1][2]);
。。。。
glEnd();
‘叁’ 如何用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);
}
‘肆’ c语言如何画图
c语言画图 要选对 C语言编程工具。 目前最方便的是“习语言”,它能编译所有C代码,又能在C代码中使用它支持的绘图函数。
也可以使用二十年前的C语言编程工具来绘图,通常是在DOS窗口中绘图。
‘伍’ C语言简单绘图,求教啊!!!!急
C语言函数库有画点point(),line()线,颜色设置color(),鼠标键盘中断int86x(),图形模式字符输出output()等函数,首先得根据你的显示器(VGA/BGA)初始化,然后就可以利用这些函数了,具体的你要看C语言高级编程,我很久没搞了很多都忘记了,以前用C语言都编过小游戏程序还在家里那台机子上
‘陆’ 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. ");
‘柒’ 如何在VC++6.0中使用C语言简单的绘图画图功能
用 VC 实现 绘图相对还是比较容易的.
定义好图元类, 成员 主要有 位置, 线型,填充类型等; 实现肢郑山绘图方法: 调用 CDC 类的 绘图函数实现绘制;
定义好图元的存储管理, 可以用链表,或数组;
如果 用 文档-视图 框架,在视图的 OnDraw 方法中, 调用各图元的绘图方法, 完成 图形的显示;
如果没用文档-视图 框架,则在 窗口的 WM_PAINT事件中,完成绘图;
4. 设计好交互, 在 WM_LBUTTONDOWN, WM_LBUTTONUP, WM_MOUSEMOVE等事件中, 进行具体实现. 主丛冲要新建 , 改变大小, 拖动等.
这样基本可以实现 简单的 绘图了.
可百历中度搜索
想用mfc做一个绘图系统,画圆直线矩形填充颜色和平移
有我帮网友作的一个例子.
‘捌’ 如何在VC++6.0中使用C语言简单的绘图画图功能
最简单的方法就是森侍在视图类中获取DC,然后此伍吵直接调用DC中的画图函数。
比如HDC dc=getdc();橘枣
dc.moveto(x,y);
dc.linet(x1,y1);
就是画一条x,y到x1,y1的直线
‘玖’ c语言编程一个画图软件(画板)该如何编写求大佬帮助,谢谢。
C语言中提供了库函数来画圆,函数名为circle
函数的头文件为 #include<graphics.h>
函数功能: circle()使用当前绘图色并以实线画一个完整的圆。
用法:该函数调用方式为void circle(int x,int y,int radius);
说明:参数x,y为圆心坐标,radius为圆半径,用像素个素表示。注意,调用circle()函数画圆时不用当前线型。
‘拾’ 求一个纯C语言绘图函数
SDL可以做到。给你贴个源码:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<SDL/SDL.h>
#include<SDL/SDL_image.h>
//函数声明
int Init(void);
SDL_Surface *createScreen(int width,int height,int bpp,Uint32 flags);
void destroyScreen(SDL_Surface *screen);
SDL_Surface *loadImageBMP(char *filename);
void loadImage(char *filename,SDL_Surface *screen,int xPos,int yPos);
SDL_Surface *screen;
SDL_Surface *image_handler;
char buffer[10];
int main(int argc,char *argv[])
{
int height=640,width=480;
int bpp=8;
Init();
screen = createScreen(width,height,bpp,SDL_SWSURFACE);
loadImage("./wuyajie.bmp",screen,width/2,height/4);
read(STDIN_FILENO,buffer,1);
destroyScreen(screen);
SDL_Quit();
return 0;
}
int Init(void)
{
if(SDL_Init(SDL_INIT_VIDEO)==-1)
{
fprintf(stderr,"SDL Init Error:%s\n",SDL_GetError());
exit(-1);
}
return 0;
}
/*
创建屏幕,并将屏幕设置为640x480大小
*/
SDL_Surface *createScreen(int width,int height,int bpp,Uint32 flags)
{
SDL_Surface *screen;
if((screen = SDL_SetVideoMode(width,height,bpp,flags))==NULL)
{
fprintf(stderr,"Could not create a screen:%s\n",SDL_GetError());
exit(-1);
}
return screen;
}
/*
加载图片
*/
void loadImage(char *filename,SDL_Surface *screen,int xPos,int yPos)
{
SDL_Surface *image;
SDL_Rect dest;
image = SDL_LoadBMP(filename);
if ( image == NULL ){
fprintf(stderr, "无法加载 %s: %s\n", filename, SDL_GetError());
exit(-1);
}
dest.x = xPos;
dest.y = yPos;
dest.w = image->w;
dest.h = image->h;
SDL_BlitSurface(image,NULL,screen,&dest);
SDL_UpdateRects(screen,1,&dest);
}
void destroyScreen(SDL_Surface * screen)
{
SDL_FreeSurface(screen);
}