写在前面
过了一个寒假不知不觉摸了很多博客,我只能说我很开心,不写博客真爽 心里很失落,不写博客的日子很空虚。但本人又不擅长文笔只能以代码补充我空洞的博客
主要内容
这次的主要内容只有一点就是
对C语言 EasyX 库的学习
EasyX
官网是这样定义EasyX的:“EasyX 是针对 C++ 的图形库,可以帮助 C/C++ 初学者快速上手图形和游戏编程。”
我觉得有一点点不能理解,这哪里是能快速上手·····
下面我就我用到的库里面的函数做出理解性说明
附上其链接:仙人指路
绘图设备相关函数
1.initgraph
这个是初始化一个图形界面窗口。
众所周知,当我们把一个文件点击编译运行之后会弹出一个黑框框,那个窗口我现在姑且称他为文本窗口,因为那个窗口实现文本操作很简单。而当你用initgraph()这个函数初始化一个图形窗口后顾名思义这个窗口里面图形操作就比较简单。
HWND initgraph(
int width,
int height,
int flag = NULL
);
这里面有三个参数就是输出这个图像窗口中的长与宽第三个参数不定义的话默认为NULL;这里不细述了,要了解的话:仙人指路
2.cleardevice
清屏函数无需任何参数就和system(“cls”)一样
图形颜色及样式设置相关函数
1.setbkcolor()
设置背景颜色,需要一个颜色参数
如无特殊需求建议直接用主色的英文名称大写
如setbackcolor(RED),setbackcolor(BLUE)这样就可以
如要搞色缝中间的颜色建议学习RBG函数
2.setlinecolor()
用法同上
3setrop2
这个函数用于设置当前设备二元光栅操作模式。
就是在屏幕的颜色模式中设置另一种颜色模式这个里面需要一些奇怪的参数具体如下
值 | 效果 |
---|---|
R2_BLACK | 绘制出的像素颜色 = 黑色 |
R2_COPYPEN | 绘制出的像素颜色 = 当前颜色(默认) |
R2_MASKNOTPEN | 绘制出的像素颜色 = 屏幕颜色 AND (NOT 当前颜色) |
R2_MASKPEN | 绘制出的像素颜色 = 屏幕颜色 AND 当前颜色 |
R2_MASKPENNOT | 绘制出的像素颜色 = (NOT 屏幕颜色) AND 当前颜色 |
R2_MERGENOTPEN | 绘制出的像素颜色 = 屏幕颜色 OR (NOT 当前颜色) |
R2_MERGEPEN | 绘制出的像素颜色 = 屏幕颜色 OR 当前颜色 |
R2_MERGEPENNOT | 绘制出的像素颜色 = (NOT 屏幕颜色) OR 当前颜色 |
R2_NOP | 绘制出的像素颜色 = 屏幕颜色 |
R2_NOT | 绘制出的像素颜色 = NOT 屏幕颜色 |
R2_NOTCOPYPEN | 绘制出的像素颜色 = NOT 当前颜色 |
R2_NOTMASKPEN | 绘制出的像素颜色 = NOT (屏幕颜色 AND 当前颜色) |
R2_NOTMERGEPEN | 绘制出的像素颜色 = NOT (屏幕颜色 OR 当前颜色) |
R2_NOTXORPEN | 绘制出的像素颜色 = NOT (屏幕颜色 XOR 当前颜色) |
R2_WHITE | 绘制出的像素颜色 = 白色 |
R2_XORPEN | 绘制出的像素颜色 = 屏幕颜色 XOR 当前颜色 |
图形绘制相关函数
画空正方形
rectangle()
这里面需要四个参数分别是正方形的左边那条线的坐标上边线的坐标右边的和下边的,顺序可不能反
void rectangle(
int left,
int top,
int right,
int bottom
);
画实心的正方形
用法与上相同
文字输出相关函数
outtextxy()
在指定x,和y的位置输出指定的字符串
void outtextxy(
int x,
int y,
TCHAR c
);
这里用的vs如果报错可以选择修改字符集为多字符或者在字符串前面加_T()
settextstyle()
设置文字风格
这个函数过于复杂
要详细了解去仙人指路
也有精简用法
settextstyle(字体大小,0,字体风格)
这个风格直接汉字就行像什么楷体宋体仿宋里面都有
settextcolor
设置当前文字颜色。
用法和前面一样
图像处理相关函数
这个以前写过
忘了在哪了
要看可以翻翻我的博客
鼠标相关函数
MOUSEMSG
这个是鼠标的结构体和那个文件的结构体差不多
struct MOUSEMSG
{
UINT uMsg; // 当前鼠标消息
bool mkCtrl; // Ctrl 键是否按下
bool mkShift; // Shift 键是否按下
bool mkLButton; // 鼠标左键是否按下
bool mkMButton; // 鼠标中键是否按下
bool mkRButton; // 鼠标右键是否按下
int x; // 当前鼠标 x 坐标(物理坐标)
int y; // 当前鼠标 y 坐标(物理坐标)
int wheel; // 鼠标滚轮滚动值
};
里面的参数很多,这里主要介绍几个
uMsg
值 | 返回 |
---|---|
WM_MOUSEMOVE | 鼠标移动消息。 |
WM_MOUSEWHEEL | 鼠标滚轮拨动消息。 |
WM_LBUTTONDOWN | 左键按下消息。 |
WM_LBUTTONUP | 左键弹起消息。 |
WM_LBUTTONDBLCLK | 左键双击消息。 |
WM_MBUTTONDOWN | 中键按下消息。 |
WM_MBUTTONUP | 中键弹起消息。 |
WM_MBUTTONDBLCLK | 中键双击消息。 |
WM_RBUTTONDOWN | 右键按下消息。 |
WM_RBUTTONUP | 右键弹起消息。 |
WM_RBUTTONDBLCLK | 右键双击消息。 |
x和y是当前鼠标所在的坐标
GetMouseMsg()
获取一条鼠标信息,返回的就是上面表中的内容
可以用if判断
其它函数
还有一个常用的函数,就是获取文本
在图形界面一般情况你在键盘上一般点啥都不会有反应
所以当我们需要输入一些信息的时候是不会有啥反应的
这时候我们就需要InputBox他会弹出一个对话框让你输入
bool InputBox(
LPTSTR pString,
int nMaxCount,
LPCTSTR pPrompt = NULL,
LPCTSTR pTitle = NULL,
LPCTSTR pDefault = NULL,
int width = 0,
int height = 0,
bool bHideCancelBtn = true
);
pString
指定接收用户输入字符串的指针。
nMaxCount
指定 pString 指向的缓冲区的大小,该值会限制用户输入内容的长度。缓冲区的大小包括表示字符串结尾的 ‘\0’ 字符。当允许多行输入时,用户键入的回车占两个字符位置。
pPrompt
指定显示在对话框中的提示信息。提示信息中可以用“\n”分行。InputBox 的高度会随着提示信息内容的多少自动扩充。如果该值为 NULL,则不显示提示信息。
pTitle
指定 InputBox 的标题栏。如果为 NULL,将显示应用程序的名称。
pDefault
指定显示在用户输入区的默认值。
width
指定 InputBox 的宽度(不包括边框),最小为 200 像素。如果为 0,则使用默认宽度。
height
指定 InputBox 的高度(不包括边框)。如果为 0,表示自动计算高度,用户输入框只允许输入一行内容,按“回车”确认输入信息;如果大于 0,用户输入框的高度会自动拓展,同时允许输入多行内容,按“Ctrl+回车”确认输入信息。
bHideCancelBtn
指定是否隐藏取消按钮禁止用户取消输入。如果为 true(默认),InputBox 只有一个“确定”按钮,没有“X”关闭按钮,按 ESC 无效;如果为 false,InputBox 有“确定”和“取消”按钮,允许点“X”和按 ESC 关闭窗口。
返回值
返回用户是否输入信息。如果用户按“确定”,返回 true;如果用户按“取消”,返回 false。
这里让我cv一下嘿嘿嘿
写在后面
那这周的周报就到此结束了
下周我会讲一下这个函数的如何联动操作