我是靠谱客的博主 畅快世界,最近开发中收集的这篇文章主要介绍前置学习——EasyX部分函数了解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

快速导航

    • 绘图设备
      • initgraph()
      • cleardevice()
    • 图形颜色及样式
      • setbkcolor()
      • setfillcolor()
      • setbkmode()
      • setlinecolor()
      • setlinestyle()
        • 样例
    • 图形绘制
      • circle()
      • fillcircle()
      • fillrectangle()
      • line()
    • 文字输出
      • outtextxy()
        • 样例
      • settextcolor()
      • settextstyle()
        • 样例
    • 鼠标相关
      • MOUSEMSG
      • GetMouseMsg()
      • MouseHit()
    • 其他
      • BeginBatchDraw()
      • FlushBatchDraw()
      • EndBatchDraw()

绘图设备

initgraph()

初始化绘图窗口

HWND 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()

用于设置当前设备图案填充和文字输出时的背景模式

void setbkmode(int mode)
mode含义
OPAQUE背景用当前背景色填充(默认)
TRANSPARENT背景透明

setlinecolor()

用于设置当前设备画线颜色

setlinestyle()

void 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连接处为圆弧

样例

setlinestyle(PS_DASH | PS_ENDCAP_FLAT, 3) //宽度3的虚线且端点平坦
setlinestyle(PS_SOLID | PS_JOIN_BEVEL, 10); //宽度10的实线,连接处是斜面

图形绘制

circle()

使用当前画线样式绘制无填充的圆

void circle(
int x, //横坐标
int y, //纵坐标
int radius; //半径
);

fillcircle()

使用当前线形和当前填充样式绘制有边框的填充圆

void fillcircle(
int x, //横坐标
int y, //纵坐标
int radius; //半径
);

fillrectangle()

使用当前线形和当前填充样式绘制有边框的填充矩形

void fillrectangle(
int left, //矩形左部x坐标
int top, //矩形顶部y坐标
int right, //矩形右部x坐标
int bottom //矩形底部y坐标
)

line()

void line(
int x1,
int y1. //直线起始点坐标
int x2,
int y2 //直线终止点坐标
);

文字输出

outtextxy()

在指定位置输出字符串

void outtextxy(
int x,
int y, //字符串输出时头字母的坐标
LPCTSTR str //待输出字符串的指针
);
void outtextxy(
int x,
int y,
TCHAR c //待输出字符
);

样例

TCHAR 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()

设置当前字体样式

void settextsrtle(
int nHeight, //高度
int nWidth, //字符平均宽度
LPCTSTR lpszFace //字体名称
);

样例

settextstyle(16, 0, _T("宋体")); //设置当前字体为高16像素的宋体
outtextxy(0, 0, _T("测试")); //输出

鼠标相关

MOUSEMSG

保存鼠标消息的结构体

struct MOUSEMSG
{
UINT uMsg;
bool mkCtrl; //Ctrl是否按下,后面以此类推
bool mkShift;
bool mkLButton; //鼠标左键是否按下
bool mkMButton;
bool mkRButton;
int x;
int y; //当前鼠标坐标
int wheel; //鼠标滚轮滚动值
};

GetMouseMsg()

用于获取一个鼠标信息。如果当前鼠标消息队列中没有,就一直等待

MOUSEMSG GetMouseMsg(); //返回保存有鼠标消息的结构体

注:默认情况下连续的鼠标单击会被识别为两个单击事件。如果希望两个连续的鼠标单击识别为双击,需要在创建绘图窗口时指定标志位EW_DBLCLKS

MouseHit()

检测当前是否有鼠标消息

bool MouseHit()

其他

BeginBatchDraw()

详细了解
用于开始批量绘图。执行后任何绘图操作都将暂时不输出到绘图窗口上直到执行FlushBatchDraw()或EndBatchDraw()才将之前的绘图输出。

FlushBatchDraw()

用于执行未完成的绘制任务

EndBatchDraw()

用于结束批量绘制,并执行未完成的绘制任务

最后

以上就是畅快世界为你收集整理的前置学习——EasyX部分函数了解的全部内容,希望文章能够帮你解决前置学习——EasyX部分函数了解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部