graphics.h图形库用法总结

说明:本篇文章是根据easyX上的说明文档和自己常用的一些内容所作出的一些总结,是一个方便初学者记忆的学习内容的框架。如果想要更全,更加详细的信息,可以直接查阅ezsyX_help.chm文档

  • graphics.h图形库可以在windows平台下的vsc++下运行的图形化库(额外安装),我们要明白的是c++也是有许多不同的。比如GNU和vs的c++,他们就是属于不同家的。因此,有些程序会有不同的结果出来。
  • easyX下载地址(vs2019的话要下载那个测试版的)

1. 基本说明

座标: 基本所有语言图形绘制的座标都是从左上角开始,水平向右为x轴,竖直向下为y轴,单位像素
initgraph(int x,int y[,flag=]) :创建一个横长x,竖长为y的图形窗,flag特性,一般用不到。
_getch() :图形关闭之前通常要键盘获得一个字符,否则图形一闪就没了。
closegraph() :关闭图形窗口函数。
cleardevice() :清空屏幕,之后会界面内容全部清空,显示为默认背景颜色。(一般用在更改背景色后)

2. 颜色模型

graphics.h 里面的颜色为RGB颜色,可以用 RGB(a,b,c) 表示任意一种颜色,其他常用颜色也可以用英文的大写表示。如:RED,BLUE等。

  1. 设置颜色的模型
    setbkcolor():设置背景颜色,参数颜色。
    setfillcolor():设置填充绘制图形式所用的颜色。
  • 上面就是设置颜色的模型,把红色的部分换成相应的即可,常用的有bk(背景),fill(填充),line(线的颜色),text(文本)
  1. 设置风格样式的模型
    setfillstyle():设置填充样式,比如竖线,横线,方格填充。(这里不做说明
    setlinestyle():设置线的填充样式
    setbkmode():图案,或文字填充的背景模式(背景色,透明)。
  • 颜色的传入参数直接为颜色即可,样式的需要特殊值
  • set换成get即是改为到相应的颜色,样式参数

3. 图形绘制

line(x1,y1,x2,y2):直线。两端点座标
rectangle(x1,y1,x2,y2):空心矩形。左上角座标,右下角座标
circle(x,y,r):空心圆。圆心座标,半径
ellipse(x1,y1,x2,y2):椭圆。外切矩形左上角座标,外切矩形右下角座标。

  • 上面的函数均是画的图形边框,除了直线外都可以用前缀fill-代表填充方式绘制图形(绘制面积),前缀clear-代表清空一个图形区域,如fillcircle()填充一个圆。

putpixel(x,y,color):画点。座标,颜色

绘制圆弧和多边形这里不做说明。

4. 文字输出

outtextxy(x,y,str):在x,y位置输出字符串str
文字的只写一个函数,其他的不做说明,需要的话可以自己查阅资料。
文本的颜色函数,(可以放在2中的颜色模型一起记,也可以在这。)
settextcolor() 、settextstyle()
gettextcolor() 、gettextstyle()

5.图像处理

图像应该读取到图像对象IMAGE变量中(全大写,类似char是个类型)

IMAGE img;
loadimage(&img,path[, width, height]):图像读取。IMAGE对象地址,路径。扩展参数,已制定宽高,拉伸读取。
putimage(x0,y0,&img):图像展示。图形窗口左上角座标处开始展示img图形。
putimage(x0,y0,w,h,&img,x,y):图像展示。和上面相比,w,h为要展示多少像素图形,x,y为img对象从该位置开始展示。

  • 透明贴图技巧:
    含义:比如我们图形窗口已经有一个背景,我们想把一张人物照片中的人贴上去,但是照片上人以外的背景不展示。
  1. 掩码图:白底黑物,如(imgy):
    在这里插入图片描述
  2. 背景图:黑底实物,如(img):
    在这里插入图片描述
  3. 贴图步骤,用SRCAND贴掩码图,用SRCPAINT贴背景图
putimage(0,0,&imgy,SRCAND);
putimage(0,0,&img,SRCPAINT);

之后就能只把不知火舞这个人给画上去

5.鼠标处理

鼠标对象MOUSEMSG 是一个结构体。内部有参数,x,y(鼠标座标),uMsg(发生的消息)等值。
uMsg类型有:
WM_LBOTTONDOWM

  • 很显然前面的WM_是一个固定形式,后面三部分是可变的。左边蓝色的值分别为L,M,R分别代表鼠标左键,中键,右键。右边绿色的值分别为DOWN,UP,DBLCLK代表按下,松起,双击信息。
  • 中键的button相对应的式鼠标的移动操作WM_MOUSEMOVE()

GetMouseMsg():成员函数,调用这个函数后程序会一直卡在哪里,知道获得一个鼠标操作信息存到成员变量uMsg中。
FlushMouseMsgBuffer():成员函数,清空鼠标缓冲区信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章