C++有没有画图函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++有没有画图函数相关的知识,希望对你有一定的参考价值。
各位伙计,我入道不久,请多指教。
我查了自己所拥有资料,没有发现特别标明的C++函数,这可让人急了,没有画图的程序不就没有色彩了吗,请问各位,C++画图与C画图一样的吗?如果不一样,哪里有相关的资料?
谢谢各位了。
肯定是有画图函数
一、屏幕操作函数
1. clrscr()清除字符窗口函数
2. window()字符窗口函数
3. gotoxy()光标定位函数
4. clreol() 清除光标行尾字符函数
5. insline() 插入空行函数
6. delline() 删除一行函数
7. gettext() 拷进文字函数
8. puttext() 拷出文字函数
9. movetext() 移动文字函数
二、字符属性函数
10. textmode() 文本模式函数
11. highvideo()高亮度函数
12. lowvideo() 低亮度函数
13. normvideo(void);
14. textcolor() 文本颜色函数
15. textattr() 文本属性函数
16.textbackground() 文本背景函数
三、 屏显状态函数
17. wherex() 光标处x坐标函数
18. wherey() 光标处y坐标函数
19. gettextinfo() 获取文本窗口信息函数
在Borland C++里面提供了字符屏幕和图形函数。字符屏幕的核心是窗口(Window),它是屏幕的活动部分,字符输出或显示在活动窗口中进行。窗口在缺省时,就是整个屏幕。窗口可以根据需要指定其大小。同样,对图形函数的操作,也提供了(Viewport)。也就是说图形函数的操作都是在视口上进行。图形视口与字符窗口具有相同的特性,用户可以在屏幕上定义大小不同的视口,若不定义视口大小,它就是整个屏幕。
窗口是在字符屏幕下的概念,只有字符才能在窗口中显示出来,这时用户可以访问的最小单位为一个字符。视口是在图形屏幕状态下的概念,文本与图形都可以在视口上显示,用户可访问的最小单位是一个像素(像素这一术语最初用来指显示器上最小的、单独的发光点单元。然而现在,其含义拓宽为指图形显示器上的最小可访问点)。
字符和图外形态下,屏幕上的位置都是由它们的行与列所决定的。有一点须指出:字符状态左上角坐标为(1,1),但图形左上角坐标为(0,0)。
了解字符屏幕和图形函数与窗口和视口的关系是很重要的。例如,字符屏幕 光标位置函数gotoxy()将光标移到窗口的x,y位置上,这未必是相对于整个屏幕。下面介绍常用的几类字符屏幕函数的功能用途、操作方法及其例行程序。
一、屏幕操作函数
编写程序绘图经常要用到对字符屏幕进行操作。例如,在往屏幕上写字符之前,首先要将屏幕清除干净。又如,有时需要在屏幕上多处写上肉中刺样的字符内容,这时最好用屏幕拷贝来高效率地完成这一任务。对这些操作,Borland C++提供了一系列字符屏幕操作函数来实现。
1. clrscr()清除字符窗口函数
功能:函数clrscr()清除整个当前字符窗口,并且把光标定位于左上角(1,1)处。
用法:此函数调用方式为 void clrscr(void);
说明:括号中void 表示无参数。
该函数相应的头文件为conio.h
返回值:无
例:使用这个函数的例子见4.clreol()函数的实例中。
2. window()字符窗口函数
功能: 函数window()用于在指定位置建立一个字符窗口。
用法: 此函数调用方式为 void window(int left,int top,int right,int bottom);
说明: 函数中参数left,top为窗口左上角坐标;right,bottom为其右下角坐标。
若有一个坐标是无效的,则window()函数不起作用。一旦该函数调用成功,那么所有定位坐标都是相对于窗口的,而不是相对于整个屏幕。但是建立窗口所用的坐标总是相对整个屏幕的绝对坐标,而不是相对当前窗口的相对坐标。这样用户就可以根据各种需要建立多个互不嵌套的窗口。
此函数的头文件为conio.h。
返回值:无
例: 调用这个函数的实现例见3.gotoxy()函数的例子中。
3. gotoxy()光标定位函数
功能: 函数gotoxy()将字屏幕上的光标移到当前窗口指定的位置上。
用法: 这个函数调用方式为void gotoxy(int x,int y);
说明: 括号里x,y是, 光标定位的坐标,假如其中一个坐标值无效(如坐标超界),那么光标不会移动。
此函数在字符状态(有时称为文本状态)下经常用到 ,其相应的头文件为conio.h
返回值:无
例: 下面程序建立两个窗口,然后在窗口里显示字符,字符的位置是调用该函数确定的。
#include"conio.h>
void border(int startx,int starty,int endx,int endy)
register int i;
gotoxy(1,1);
for(i=0;i<=endx-startx;i++)
putch('-');
gotoxy(1,endy-starty);
for(i=0;i<=endx-startx;i++)
putch('-');
for(i=2;i<=endy-starty;i++)
gotoxy(1,i);
putch('1');
gotoxy(endx-startx+1,i);
putch('1');
main()
void border(int,int,int,int);
clrscr();
window(6,8,38,12);
border(6,8,38,12);
gotoxy(2,2);
printf("window 1");
window(8,16,40,24);
border(8,16,40,24);
gotoxy(3,2);
printf("window 2");
getch();
4. clreol() 清除光标行尾字符函数
功能: 函数clreol()在当前字符窗口中清除从光标位置到行尾的所有字符,而光标位置保持不变。
用法: 它的调用方式为void clreol(void);
说明: 此函数的相应头文件为 conio.h
返回值:无
例: 程序中使用了函数clreol()和clrscr()
#include "conio.h>
void main()
register int i;
gotoxy(6,8);
printf("This is a test of the clreol() function.");
getch();
gotoxy(6,8);
clreol();
for(i=0;i<20;i++)
printf("Hello ");
getch();
clrscr();
5. insline() 插入空行函数
功能: 函数insline()插入一空行到当前光标所在行上,同时光标以下的所有行都向下顺移一行。
用法: 此函数的调用方式为void insline(void);
说明: 该函数只用于文本方式,并且在当了符窗口才有效。
这个函数的对应头文件是 conio.h
返回值:无
例: 程序给出了insline()函数的用法。
#include "conio.h"
void main()
registser int i;
clrscr();
for(i=1;i<24;i++)
gotoxy(1,i);
printf("This is line %d ",i);
getch();
gotoxy(1,10);
insline();
getch();
6. delline() 删除一行函数
功能: 函数delline()删除当前窗口内光标所在行,同时把该行下面 所有行都上移一行。
用法: 此函数调用方式为 void delline(void);
说明: 注重,假如当前窗口小于整个屏幕,那么该函数只影响到窗口内的字符。
这个函数相应的头部文件是conio.h
返回值: 无
例:先在屏幕上显示16行文字,然后删除第4行
#include "conio.h"
void main()
register int i;
clrscr();
for(i=0;i<16;i++) printf("line %d ",i);
getch();
gotoxy(1,4);
delline();
getch();
7.gettext() 拷进文字函数
功能: 函数gettext()用于文本状态下将屏幕上矩形域
首先要用#include"graphics.h"这个库函数,然后你需要按如下步骤来写#include"graphics.h"main() int gdrive=DETECT,gmode;/*定义两个参数:图形驱动和图形模式*/initgraph(&gdrive,&gmode,"");/*初始化图形模式,第三个参数填的是路径*/registerbgidriver(EGAVGA_driver);/*这个是用来注册图形模式来建立独立图形运行程序*/bar(x1,y1,x2,y2);/*画矩形*/circle(x1,y1,r);/*画圆*/getch();closegraph();/*关闭图形模式*/如果需要其他的函数的话,画点函数void far putpixel(int x, int y, int color);关于点的另外一个函数是:int far getp
返回x轴的最大值。int far getmaxy(void);返回y轴的最大值。int far getx(void);返回游标在x轴的位置。void far gety(void);返回游标有y轴的位置。void far moveto(int x, int y);移动游标到(x, y)点, 不是画点, 在移动过程中亦画点。void far moverel(int dx, int dy);移动游标从现行位置(x, y)移动到(x+dx, y+dy)的位置, 移动过程中不画点。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,
画一个顶点数为numpoints, 各顶点坐标由polypoints 给出的多边形。polypoints整型数组必须至少有2倍顶点数个无素。每一个顶点的坐标都定义为x,y, 并且x在前。值得注意的是当画一个封闭的多边形时, numpoints 的值取实际多边形的顶点数加一, 并且数组polypoints中第一个和最后一个点的坐标相同。void far bar(int x1, int y1, int x2, int y2);确定一个以(x1, y1)为左上角, (x2, y2)为右下角的矩形窗口, 再按规定图模和颜色填充。说明: 此函数不画出边框, 所以填充色为边框。void far bar3d(int x1, int y1, int x2, int y2, int depth, inttopflag);当topflag为非0时, 画出一个三维的长方体。当topflag为
画一个顶点数为numpoints, 各顶点坐标由polypoints 给出的多边形。polypoints整型数组必须至少有2倍顶点数个无素。每一个顶点的坐标都定义为x,y, 并且x在前。值得注意的是当画一个封闭的多边形时, numpoints 的值取实际多边形的顶点数加一, 并且数组polypoints中第一个和最后一个点的坐标相同。void far bar(int x1, int y1, int x2, int y2);确定一个以(x1, y1)为左上角, (x2, y2)为右下角的矩形窗口, 再按规定图模和颜色填充。说明: 此函数不画出边框, 所以填充色为边框。void far bar3d(int x1, int y1, int x2, int y2, int depth, inttopflag);当topflag为非0时, 画出一个三维的长方体。当topflag为
为0时, 三维图形不封顶, 实际上很少这样使用。说明: bar3d()函数中, 长方体第三维的方向不随任何参数而变, 即始终为45度的方向。void far pieslice(int x, int y, int stangle, int endangle, intradius);画一个以(x, y)为圆心, radius为半径, stangle为起始角度, endangle 为终止角度的扇形, 再按规定方式填充。当stangle=0, endangle=360 时变成一个实心圆, 并在圆内从圆点沿X轴正向画一条半径。void far sector(int x, int y, int stanle, intendangle, intxradius, int yradius);画一个以(x, y)为圆心分别以xradius, yradius为x轴和y轴半径, stangl
为起始角, endangle为终止角的椭圆扇形, 再按规定方式填充。
如果我的回答对你有帮助的话,请给我个赞。
参考技术C vc++可以绘图,有专门的绘图函数,如:pen等,去找一下,就是基本的几个不多。 参考技术D #include<graphics.h>#include <conio.h>
void main()
initgraph(400, 400);
circle(200,200,100);
circle(170,170,15);
circle(230,170,15);
circle(200,240,30);
getch();
closegraph();
参考资料:书
matlab画图如何清除图中的一部分
问题描述如下,用matlab动态的的画一个网络的演化过程,网络的演变过程中,点和边不断地加入,这个可以通过 hold,pause来解决的,但是这当中有时会要去掉之前已画的某一条边或某个点,这个该如何动态的实现呢?就是说如何清除之前所画图中的某一部分?是不是matlab中有这样的函数?
movie函数我也想过,不过那个help看都看不懂,如果movie能够做到的话,请具体说一下movie得用法,最好是结合我的问题的具体操作,cla是删除全部图像把,我要删除的是一部分阿
举例如下:
h = get(handles.axes1, 'children'); % 获取坐标轴的children属性
delete(h(1)); % 删除上次绘制的子图形 参考技术A help movie
好像erase的参数是可以决定清除图象的模式 参考技术B 图形与坐标轴的删除 cla,clf 参考技术C movie系列函数有好多功能,我记得有一个可逐渐消图的函数,你可以设定消到一定程度停止并hold,具体资料可以上中国数模网搜本回答被提问者采纳
以上是关于C++有没有画图函数的主要内容,如果未能解决你的问题,请参考以下文章
Mathematica里面用Plot画图怎么只有坐标没有图像?
在MFC的单文档中用OpenGL画图,画图函数明明运行了,为啥就是显示不出来?画图函数如下: