easyx的简单使用
该库要使用c++
easyx库下载即文档查看请点此处.
窗口的创建
- initgraph这个函数用于初始化绘图窗口。
//原型
HWND initgraph(
int width,
int height,
int flag = NULL
);
- 参数
- width 绘图窗口的宽度。
- height 绘图窗口的高度。
- flag 绘图窗口的样式,默认为 NULL。
- 如果传入0,等同于NULL
- 如果传入1 会显示控制台,所有控制台函数打印结果都会显示
- 可为以下值:
值 | 含义 |
---|---|
EW_DBLCLKS | 在绘图窗口中支持鼠标双击事件。 |
EW_NOCLOSE | 禁用绘图窗口的关闭按钮。 |
EW_NOMINIMIZE | 禁用绘图窗口的最小化按钮。 |
EW_SHOWCONSOLE | 显示控制台窗口。 |
#include<stdio.h>
#include<easyx.h>
//或#include <graphics.h>
int main()
{
initgraph(520, 520,0);
//也可写成initgraph(520, 520);
while (1);
return 0;
}
文字输出
- 首先项目属性改为多字节(二个字节存放一个字符)
- outtextxy 这个函数用于在指定位置输出字符串。
- 注意:图形窗口只能打印字符和字符串
- 如何打印数字:对地方库做在加工的过程
- 数字转换为字符串即可
//原型
void outtextxy(
int x,
int y,
LPCTSTR str
);
void outtextxy(
int x,
int y,
TCHAR c
);
//参数:
//x 字符串输出时头字母的 x 轴的坐标值。
//y 字符串输出时头字母的 y 轴的坐标值。
//str 待输出的字符串的指针。
//c 待输出的字符。
- 数字转换字符串
- 用sprintf或sprintf_s函数: 格式化打印
- 相比于printf 多了一个打印位置描述
//函数原型:
int sprintf(char* const _Buffer,char const* const _Format)
int sprintf_s(char* const _Buffer,size_t const _BufferCount,char const* const _Format)
//_Buffer 打印的位置
#include<stdio.h>
#include<easyx.h>
//或#include <graphics.h>
void outtextxy_int(int x, int y, int data)
{
char str[20] = "";
sprintf_s(str, 20, "%d", data);
outtextxy(x, y, str);
}
void outtextxy_double(int x, int y, double data)
{
char str[20] = "";
sprintf_s(str, 20, "%lf", data);
outtextxy(x, y, str);
}
int main()
{
initgraph(520, 520);
outtextxy_int(100, 100, 1314);
outtextxy_double(100, 120, 1314.520);
while (1);
return 0;
}
格式控制
- 字体大小: settextstyle(20,0,“楷体”); 20:文字的高度 ,0自适应
- 这个函数用于设置当前字体样式。
//函数原型: void settextstyle( int nHeight, int nWidth, LPCTSTR lpszFace );
- 颜色: settextcolor(颜色)
- 这个函数用于设置当前文字颜色。
//函数原型: void settextcolor(COLORREF color);
- RGB配置:三原色配置,得到混合色
+RGB 宏用于将红、绿、蓝颜色分量合成颜色。//函数原型: COLORREF RGB( BYTE byRed, // 颜色的红色部分 BYTE byGreen, // 颜色的绿色部分 BYTE byBlue // 颜色的蓝色部分 );
- 参数
- byRed 颜色的红色部分,取值范围:0~255
- byGreen 颜色的绿色部分,取值范围:0~255
- byBlue 颜色的蓝色部分,取值范围:0~255
- 返回值
- 返回合成的颜色
- 参数
- 字体大小: settextstyle(20,0,“楷体”); 20:文字的高度 ,0自适应
基本绘图
- line(int x,int y,int xx,int yy): //画直线
- (x,y)为开始点的坐标
- (xx,yy)为结束点的坐标
- circle(int x,int y,int r): //画圆
- (x,y)为原点的坐标
- r为半径
- rectangle(int x,int y,int xx,int yy): //画矩形
- (x,y)为左上点的坐标
- (xx,yy)为右下点的坐标
- 填充系列
- 设置填充颜色: setfillcolor(RGB(0,255,0));
- fill带线的的填充
- 设置线的颜色:setlinecolor(RGB(255,0,0));
- 线的样式: settextstyle()
- fillcircle(int x,int y,int r);//画有边框的填充圆
- fillrectangle(int x,int y ,int xx,int yy);画有边框的填充矩形
- solid系列的不带边框线的
- solidcircle(int x,int y,int r);
- solidrectangle(int x,int y ,int xx,int yy);
双缓冲绘图
- 什么是双缓冲
- 当启用双缓冲时,所有绘制操作首先呈现到内存缓冲区,而不是屏幕上的绘图图面。所有绘制操作完成后,内存缓冲区直接复制到与其关联的绘图图面。
- 作用:防止闪屏
- 开始双缓冲: BeginBatchDraw();
- 这个函数用于开始批量绘图。执行后,任何绘图操作都将暂时不输出到绘图窗口上,直到执行 FlushBatchDraw 或 EndBatchDraw 才将之前的绘图输出。
- 结束双缓冲: EndBatchDraw();
- 这个函数用于结束批量绘制,并执行未完成的绘制任务。
- 显示一帧: FlushBatchDraw();
- 这个函数用于执行未完成的绘制任务。
//以下代码实现一个圆从左向右移动,会有比较明显的闪烁。
//请取消 main 函数中的三个注释,以实现批绘图功能,可以消除闪烁。
#include <graphics.h>
int main()
{
initgraph(640, 480);
// BeginBatchDraw();
setlinecolor(WHITE);
setfillcolor(RED);
for (int i = 50; i < 600; i++)
{
circle(i, 100, 40);
floodfill(i, 100, WHITE);
// FlushBatchDraw();
Sleep(10);
cleardevice();
}
// EndBatchDraw();
closegraph();
}
版权声明:本文为qq_66954747原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。