快速导航
- 绘图设备
- initgraph()
- cleardevice()
- 图形颜色及样式
- setbkcolor()
- setfillcolor()
- setbkmode()
- setlinecolor()
- setlinestyle()
- 样例
- 图形绘制
- circle()
- fillcircle()
- fillrectangle()
- line()
- 文字输出
- outtextxy()
- 样例
- settextcolor()
- settextstyle()
- 样例
- 鼠标相关
- MOUSEMSG
- GetMouseMsg()
- MouseHit()
- 其他
- BeginBatchDraw()
- FlushBatchDraw()
- EndBatchDraw()
绘图设备
initgraph()
初始化绘图窗口
复制代码
1
2
3
4
5
6HWND initgraph( int width; int height; int flag = NULL; );
flag | 含义 |
---|---|
EW_DBLCLKS | 在绘图窗口中支持鼠标双击事件 |
EW_NOCLOSE | 禁用绘图窗口的关闭按钮 |
EW_NOMINIMIZE | 禁用绘图窗口的最小化按钮 |
EW_SHOWCONSOLE | 显示控制台窗口 |
cleardevice()
用当前背景色清空绘图设备,并将当前点移至(0, 0)
图形颜色及样式
setbkcolor()
用于设置当前设备绘图背景色。但是用该函数设置背景色后并不会改变现有背景色的,而是只改变背景色的值,之后再执行绘图语句比如outtextxy()才会使用新设置的背景色值。
如果要修改全部背景色,可以在设置背景色后执行cleardevice()
setfillcolor()
用于设置当前设备填充颜色
setbkmode()
用于设置当前设备图案填充和文字输出时的背景模式
复制代码
1
2void setbkmode(int mode)
mode | 含义 |
---|---|
OPAQUE | 背景用当前背景色填充(默认) |
TRANSPARENT | 背景透明 |
setlinecolor()
用于设置当前设备画线颜色
setlinestyle()
复制代码
1
2
3
4
5
6
7
8
9
10void setlinestyle( const LINESTYLE* pstyle //指向画线样式LINESTYLE的指针 ); void setlinestyle( int style, //画线样式 int thickness = 1, //线的宽度 const DWORD* puserstyle = NULL, //用户自定义样式数组 DWORD userstylecount = 0 //用户自定义样式数组的元素数量 );
style | 含义 |
---|---|
PS_SOLID | —— |
PS_DASH | ------ |
PS_DOT | ······· |
PS_DASHDOT | -·-·-·-· |
PS_USERSTYLE | 用户自定义样式,参数由puserstyle和userstylecount指定 |
PS_ENDCAP_MASK能改变端点样式
值 | 含义 |
---|---|
PS_ENDCAP_ROUND | 端点为圆形 |
PS_ENDCAP_SQUARE | 端点为方形 |
PS_ENDCAP_FALT | 端点平坦 |
PS_JOIN_MASK能改变连接处样式
值 | 含义 |
---|---|
PS_JOIN_BEVEL | 连接处为斜面 |
PS_JOIN_MITER | 连接处斜接 |
PS_JOIN_ROUND | 连接处为圆弧 |
样例
复制代码
1
2
3setlinestyle(PS_DASH | PS_ENDCAP_FLAT, 3) //宽度3的虚线且端点平坦 setlinestyle(PS_SOLID | PS_JOIN_BEVEL, 10); //宽度10的实线,连接处是斜面
图形绘制
circle()
使用当前画线样式绘制无填充的圆
复制代码
1
2
3
4
5
6void circle( int x, //横坐标 int y, //纵坐标 int radius; //半径 );
fillcircle()
使用当前线形和当前填充样式绘制有边框的填充圆
复制代码
1
2
3
4
5
6void fillcircle( int x, //横坐标 int y, //纵坐标 int radius; //半径 );
fillrectangle()
使用当前线形和当前填充样式绘制有边框的填充矩形
复制代码
1
2
3
4
5
6
7void fillrectangle( int left, //矩形左部x坐标 int top, //矩形顶部y坐标 int right, //矩形右部x坐标 int bottom //矩形底部y坐标 )
line()
复制代码
1
2
3
4
5
6
7void line( int x1, int y1. //直线起始点坐标 int x2, int y2 //直线终止点坐标 );
文字输出
outtextxy()
在指定位置输出字符串
复制代码
1
2
3
4
5
6
7
8
9
10
11void outtextxy( int x, int y, //字符串输出时头字母的坐标 LPCTSTR str //待输出字符串的指针 ); void outtextxy( int x, int y, TCHAR c //待输出字符 );
样例
复制代码
1
2
3
4
5
6
7
8
9TCHAR s[] = _T("HELLO WORLD"); outtextxy(10, 20, s); /* Windows为了消除各编译器的差别,重新定义了一些数据类型。 CHAR为单字节字符。还有个WCHAR为Unicode字符,即不论中英文,每个字有两个字节组成。 如果当前编译方式为ANSI(默认)方式,TCHAR等价于CHAR,如果为Unicode方式,TCHAR等价于WCHAR。 LPCSTR 相当于CONST CHAR * 和LPSTR 相当于CHAR *。 */
settextcolor()
设置当前字体颜色
settextstyle()
设置当前字体样式
复制代码
1
2
3
4
5
6void settextsrtle( int nHeight, //高度 int nWidth, //字符平均宽度 LPCTSTR lpszFace //字体名称 );
样例
复制代码
1
2
3settextstyle(16, 0, _T("宋体")); //设置当前字体为高16像素的宋体 outtextxy(0, 0, _T("测试")); //输出
鼠标相关
MOUSEMSG
保存鼠标消息的结构体
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13struct MOUSEMSG { UINT uMsg; bool mkCtrl; //Ctrl是否按下,后面以此类推 bool mkShift; bool mkLButton; //鼠标左键是否按下 bool mkMButton; bool mkRButton; int x; int y; //当前鼠标坐标 int wheel; //鼠标滚轮滚动值 };
GetMouseMsg()
用于获取一个鼠标信息。如果当前鼠标消息队列中没有,就一直等待
复制代码
1
2MOUSEMSG GetMouseMsg(); //返回保存有鼠标消息的结构体
注:默认情况下连续的鼠标单击会被识别为两个单击事件。如果希望两个连续的鼠标单击识别为双击,需要在创建绘图窗口时指定标志位EW_DBLCLKS
MouseHit()
检测当前是否有鼠标消息
复制代码
1
2bool MouseHit();
其他
BeginBatchDraw()
详细了解
用于开始批量绘图。执行后任何绘图操作都将暂时不输出到绘图窗口上直到执行FlushBatchDraw()或EndBatchDraw()才将之前的绘图输出。
FlushBatchDraw()
用于执行未完成的绘制任务
EndBatchDraw()
用于结束批量绘制,并执行未完成的绘制任务
最后
以上就是畅快世界最近收集整理的关于前置学习——EasyX部分函数了解的全部内容,更多相关前置学习——EasyX部分函数了解内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复