一、绘制绘图窗口
1.初始化窗口(大小和样式)
initgraph(int width, int height, int flag=NULL);//用于初始化绘图窗口
三个参数分别为窗口的宽度、高度和样式
(向右为x轴正向,对应width;向下为y轴正向,对应height)
其中样式flag默认为NULL,还有其他的形式:
SHOWCONSOLE(显示控制台,show console)
NOCLOSE(没有关闭功能,no close)
NOMINMIZE(没有最小化功能,no minmize)
DBLCLKS(设置鼠标双击功能,double-click)
用' | '号可同时使用flag的多种样式
注意:要加上前缀EX_
initgraph(680, 480, EX_SHOWCONSOLE | EX_DBLCLKS);//新建绘图窗口
2.设置窗口背景(颜色和透明格式)
setbkcolor(RGB(int, int, int));//设置背景颜色
- 可直接写已定义的颜色(如白色WHITE,黄色YELLOW,红色RED和蓝色BLUE等)
- 也可以自己寻找喜欢的颜色,填入RGB参数(1. win+R ,打开mspaint,找到喜欢的背景颜色,记录下该颜色的RGB;2. 或者在登录qq的状态下,可以按下control+alt+a,就会显示鼠标所指的地方的颜色的RGB)
cleardevice();//清空上一次的绘图(实际上是用这次的绘图覆盖上一次的绘图,这也是为什么要先设置背景颜色,再写cleardevice(),就是要用设置好了的颜色来覆盖背景)
setbkmode(TRANSPARENT);//设置背景模式为透明(tranparent透明的)
3.关闭绘图窗口
getchar();
closegraph();
注意:在关闭窗口之前,如果想让窗口一直保持显现出来,就要加上getchar()
getchar()能防止程序关闭,因为不输入字符的话,它会一直处于等待状态,无法结束运行
代码展示
int main()
{
initgraph(680, 480, EX_SHOWCONSOLE);
setbkcolor(BLUE);
cleardevice();
setbkmode(TRANSPARENT);
getchar();
closegraph();
return 0;
}
二、 绘制图形
1.点
putpixel(横坐标x,纵坐标y,颜色);
2.直线与折线
1. 直线画图原理:两点A,B连成一条线
line(A的横坐标,A的纵坐标,B的横坐标,B的纵坐标)
在画线之前还可以先设置线条的颜色和格式:
setlinecolor(RED);
setlinestyle(PS_SOLID,3);
格式:PS_SOLID(实线)
PS_DASH(虚线)
PS_DOT(点线)
PS_DASHDO(_ . _ . _ .)
PS_DASHDOTDOT(_ . . _ . . _ . .)
setlinecolor(RED);
setlinestyle(PS_SOLID, 3);
line(0, 0, getwidth(), getheight());
2. 折线:多点连成一条折线
polyline(点集构成的数组,int num(最大为数组中的元素个数));
POINT points[] = { {0,0},{100,100},{200,0},{300,100},{400,0 } };
polyline(points, 5);
3.矩形
1.直角矩形
绘图原理:先确定矩形的左上顶角A和右下顶角B,矩形随之确定
rectangle(int left, int top, int right, int bottom);
( A的坐标为(left, top),B的坐标为(right, bottom))
无填充:rectangle(int left, int top, int right, int bottom);
有边框填充:fillrectange(int left, int top, int right, int bottom);
无边框填充:solidrectange(int left, int top, int right, int bottom);
2. 圆角矩形(在角落放置一个椭圆,从而将直角变换成圆角):
roundrect(int left, int top, int right, int bottom, int a, int b);
fillroundrect(int left, int top, int right, int bottom, int a, int b);
solidroundrect(int left, int top, int right, int bottom, int a, int b);
其中a和b是确定圆角的参数(分别为椭圆的长半轴长和短半轴长)
4.圆形
circle(圆心横坐标,圆心纵坐标,半径);
fillcircle(圆心横坐标,圆心纵坐标,半径);
roundcircle(圆心横坐标,圆心纵坐标,半径);
5.椭圆
绘图原理:在直角矩形内确定一个内接椭圆
ellipse(int left, int top, int right, int bottom);
fillellipse(int left, int top, int right, int bottom);
solidellipse(int left, int top, int right, int bottom);
三、文字
1.基本函数
settextcolor(颜色);
settextstyle(字的高度,宽度,字体); //宽度可设为0,则为自适应调整比例
outtextxy(int x, int y, 字符串); //在指定位置输出字符串
textheight(); textwidth(); //获取字符串实际占用的像素高度和宽度
2.报错时的解决办法
1.改成 L字符串(强制转换)
2.改成 _T(字符串) (自适应转换)
3.项目->属性->高级->字符集->使用多字节字符集 (最推荐)
3.如何让文本居中
int x, y, w, h;
rectangle(x, y, x + w, y + h);
char str1[50] = "hello,world!";
int hSpace = (w - textwidth(str1)) / 2;
int vSpace = (h - textheight(str1)) / 2;
outtextxy(x + hSpace, y + vSpace, str1);