C语言图形化编程之easyx的简单使用

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
        • 返回值
          • 返回合成的颜色

在这里插入图片描述

基本绘图

  • 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();
}

  • 6
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值