easyX库其他函数(注释版)

news2024/11/17 3:36:59

本篇是easyX库系列正文最后一篇,依旧是有几个很有价值的函数,我不补充了几个例子,对easyX库中的部分code例子做了修改。

0.其它函数概览

函数或数据类型描述
GetEasyXVer获取当前EasyX库的版本信息。
BeginBatchDraw开始批量绘图。
EndBatchDraw结束批量绘制,并执行未完成的绘制任务。
FlushBatchDraw执行未完成的绘制任务。
GetHWnd获取绘图窗口句柄。
InputBox以对话框形式获取用户输入。

1.GetEasyXVer:获取当前EasyX库的版本信息

const TCHAR* GetEasyXVer();

没什么好解释的,看看就行。

2.BeginBatchDraw:开始批量绘图

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

void BeginBatchDraw();

这样做的原因是为了保证画面流畅度,若一直输出绘画会出现明显的闪烁问题,下面是easyX文档中给出的对比例子:

//一个例子
//您可以试着同时取消下面两个函数的注释,然后运行下面的代码,来对比没有同时去掉注释的代码效果
#include <graphics.h>

int main()
{
	initgraph(640,480);
	//BeginBatchDraw();

	setlinecolor(WHITE);
	setfillcolor(RED);

	for(int i=50; i<600; i++)
	{
		cleardevice();
		circle(i, 100, 40);
		floodfill(i, 100, WHITE);
		//FlushBatchDraw();
		Sleep(10);
	}

	EndBatchDraw();
	closegraph();
}

3.FlushBatchDraw:执行未完成的绘制任务

//执行未完成的绘制任务
void FlushBatchDraw();

//执行指定区域内未完成的绘制任务
void FlushBatchDraw(
	int left,
	int top,
	int right,
	int bottom
); 
//参数
//left:定区域的左部x坐标。
//top:指定区域的上部y坐标。
//right:指定区域的右部x坐标。
//bottom:指定区域的下部y坐标。

//返回值
//无

4.EndBatchDraw:结束批量绘制并执行未完成的绘制任务

//结束批量绘制,并执行未完成的绘制任务
void EndBatchDraw();

//结束批量绘制,并执行指定区域内未完成的绘制任务
void EndBatchDraw(
	int left,
	int top,
	int right,
	int bottom
);
//参数 
//left:定区域的左部x坐标。 
//top:指定区域的上部y坐标。 
//right:指定区域的右部x坐标。 
//bottom:指定区域的下部y坐标。 

//返回值 
//无

FlushBatchDraw()和EndBatchDraw()的区别可以通过下面的等价代码看出来:

//一个例子
//批量绘制写法1
#include <graphics.h>
int main()
{
	initgraph(640,480);
	BeginBatchDraw();

	setlinecolor(WHITE);
	setfillcolor(RED);

	for(int i=50; i<600; i++)
	{
		cleardevice();
		circle(i, 100, 40);
		floodfill(i, 100, WHITE);
		FlushBatchDraw();
		Sleep(10);
	}

	EndBatchDraw();
	closegraph();
}
//----------------------------------
//批量绘制写法2
//(从思路上应该是等价的,但是可能效率会低一些我没有细致验证过这件事情,只是光看图形的显示效果)
#include <graphics.h>
#include <stdio.h>
int main()
{
	initgraph(640, 480, EX_SHOWCONSOLE);
	BeginBatchDraw();

	setlinecolor(WHITE);
	setfillcolor(RED);

	for (int i = 50; i < 600; i++)
	{
		cleardevice();
		circle(i, 100, 40);
		floodfill(i, 100, WHITE);
		//FlushBatchDraw();
		EndBatchDraw();
		BeginBatchDraw();
		Sleep(10);
	}

	EndBatchDraw();
	getchar();
	closegraph();
}

意思就是,EndBatchDraw()会直接把所有绘制输出,并且退出批量绘制的状态。但是FlushBatchDraw()在把所有绘制输出的同时,不会退出批量绘制的状态。

批量绘制使得easyX库绘制动画变为可能。

5.GetHWnd:获取绘图窗口句柄

HWND GetHWnd();

//参数
//无

//返回值
//返回绘图窗口句柄。

在Windows中,句柄是一个窗口的标识(您可以简单理解为一个指向窗口的特殊指针),得到句柄后就可以用Windows API中的函数实现对窗口的控制。(注意请不要通过该窗口句柄获取窗口的DC然后利用GDI函数实现对窗口的绘图操作。由于实现机制的问题,获取窗口的DC请使用GetImageHDC())easyX库文档在这里演示了一个使用API的例子:

//引入easyX头文件
#include <graphics.h>
#include <stdio.h>
int main()
{
    //初始化图形环境
    initgraph(640, 480, EX_SHOWCONSOLE);

    //获得窗口句柄
    HWND hWnd = GetHWnd();

    //使用 Windows API 修改窗口名称
    SetWindowTextW(hWnd, _T("Hello!"));

    //其他绘图操作和逻辑代码
    getchar();

    //关闭图形环境
    closegraph();

    return 0;
}

在这里插入图片描述

6.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。

下面举一个例子:

#include <graphics.h>
#include <stdio.h>
int main()
{
	//1.初始化绘图窗口
	initgraph(640, 480, EX_SHOWCONSOLE);
	//2.定义字符串缓冲区,并接收用户输入
	wchar_t s[10];
	while (1)
	{
		InputBox(s, 10, _T("请输入半径"), _T("画圆小程序"), _T("100"), 50,50, true);
		//3.将用户输入转换为数字
		int r = _wtoi(s);
		//4.画圆
		circle(320, 240, r);
	}
	//5.按任意键退出
	getchar();
	closegraph();
	return 0;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/700530.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java Web HTMLCSS(1)23.6.29

HTML&CSS 1&#xff0c;HTML 1.1 介绍 HTML 是一门语言&#xff0c;所有的网页都是用HTML 这门语言编写出来的&#xff0c;也就是HTML是用来写网页的&#xff0c;像京东&#xff0c;12306等网站有很多网页。 这些都是网页展示出来的效果。而HTML也有专业的解释 HTML(Hy…

Pycharm中打开HTML文件报错:Windows 找不到文件‘chrome‘

问题现象&#xff1a; Pycharm中&#xff0c;打开HTML文件&#xff0c;选择chrome浏览器打开时&#xff0c;报错&#xff1a;Windows 找不到文件’chrome’。请确定文件名是否正确后&#xff0c;再试一次。但实际上你的电脑上是安装了Chrome浏览器的。 解决方案&#xff1a; 原…

【算法】状态机DP 买卖股票系列

文章目录 前期知识股票问题买卖股票的最佳时机 II最佳买卖股票时机含冷冻期买卖股票的最佳时机 IV补充&#xff1a;恰好k次 / 至少k次 怎么做&#xff1f; 相关题目练习买卖股票的最佳时机 https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/解法1——状态机DP解法…

十三、禅道登录/提交版本/编辑版本接口

十三、禅道提交版本/编辑版本接口 1. 禅道的登录接口或者叫获取tokens接口 # -*- coding: utf-8 -*- """ ------------------------------------------------------------------------------- File : zentao_login.py Time : 2023/6/29 13:55 author : …

Java读取Excel第一行数据,获取表头

目录 一、场景 二、代码实现 1、工具类 2、方法调用 3、结果 之前写过一篇关于解析Excel的博客&#xff1a;解析读取Excel文件&#xff08;.xls .xlsx&#xff09;&#xff0c;今天再分享一下&#xff0c;如何获取Excel的表头数据。 一、场景 需要判断导入的Excel文件的列…

什么是AQS

AQS&#xff08;Abstract Queued Synchronizer&#xff09;是一个抽象的队列同步器&#xff0c;通过维护一个共享资源状态&#xff08;Volatile Int State&#xff09;和一个先进先出&#xff08;FIFO&#xff09;的线程等待队列来实现一个多线程访问共享资源的同步框架。 AQS…

今日份分享:三个电脑mp3转换器推荐

有一个音乐爱好者叫小艾。她对音乐充满热爱&#xff0c;每天都会用耳机沉浸在动听的旋律中。然而&#xff0c;她最近遇到了一个问题&#xff1a;她手头有一些喜欢的音乐文件&#xff0c;但格式却是不支持她的音乐播放器。这让她感到非常困扰&#xff0c;因为她希望随时随地欣赏…

适用于Vue 3的最佳开源分页库

从头开始实现分页可能是一项耗时的任务&#xff0c;需要大量的精力和资源。幸运的是&#xff0c;有几个伟大的开源库可以简化这个过程&#xff0c;提高你的效率。使用分页库可以节省你的时间和精力&#xff0c;使你能够专注于建立你的应用程序的其他更重要的功能。 在这篇文章…

如何选择适合自己的专业?

高考季又到了&#xff0c;毕业生们正忙着选填志愿。志愿填报是一个关键的决策&#xff0c;它将对他们未来的学习和就业产生重要影响。在这个关键的时刻&#xff0c;一些相关问题随之而来&#xff1a;如何填报志愿&#xff1f;是选择专业还是学校&#xff1f;哪些专业就业前景好…

全国农信银CTF逆向Baby8or解析

按CTRL X 跳转到main函数&#xff0c;按F5 生成伪代码进行分析。 发现一个加密函数&#xff0c;当加密后的数据和genc[i]数组中的值对比一致则表示正确flag&#xff0c;字符串长度为35。 双击genc[i] 找到genc[i]中的数据&#xff0c;转成10进制得到数组 genc[172,102,148,22…

数据结构--双链表

数据结构–双链表 单链表 VS 双链表 单链表&#xff1a;无法逆向检索&#xff0c;有时候不太方便 双链表&#xff1a;可进可退&#xff0c;存储密度更低一丢丢 双链表的定义 typedef struct DNode {ElemType data;struct DNode *prior, *next; }DNode, *DLinkList;双链表的初…

JavaWeb——2.注解

这篇文章我们来讲一下Java中的注解 其实这部分内容算是Javaweb的补充内容&#xff0c;其中还包括Junit测试和反射的相关内容。 Junit测试是一个比较简单的内容&#xff0c;这里就不写了&#xff1b;而反射的相关内容可以看java基础专栏&#xff0c;那里面有详细的叙述。 目录…

Jvm jmx_exporter Prometheus dubbo Grafana 重点看端口要对应上 单独进程和程序进程内jmx_exporter

目录 JMX Exporter 的两种用法 启动独立进程 jmx_prometheus_httpserver-0.18.0.jar 方式 下载 jmx_exporter 找地方随便一放 创建配置文件 config_jmx_exporter.yaml 增加 启动 jvm 配置 一定要是jvm参数 可别意外写成程序参数 启动jmx_exporter Prometheus yml 配置 …

使用jmap查看对象数

jmap&#xff1a;JVM自带的一种内存映像工具 查看jmap命令帮助 查询java进程pid # 查看堆内存中的对象 jmap -histo PID# 查看堆内存中的存活对象 jmap -histo:live PID 使用示例&#xff1a; jmap -histo:live 46024|grep com.kingbase8.jdbc.KbConnection 列说明 num#insta…

1.4、Java的标识符 关键字 注释 变量 数据类型与类型转换

1 JAVA语法基础 1.1 标识符 标识符可以简单的理解成一个名字。 在Java中&#xff0c;我们需要给代码中的很多元素起名&#xff0c;包括类名、方法名、字段名、变量名等等。我们给对应元素起的名称就被称为标识符&#xff0c;一个正确的标识符需要遵循以下规则&#xff1a; 1、…

简单实现接口自动化测试(基于python+unittest)

目录 简单实现接口自动化测试(基于pythonunittest) 简介 引言 为什么要做接口自动化测试? 为什么要自己写框架呢? 一个现有的简单接口例子 接口信息如下 测试思路 原始脚本实现 未优化 优化 第一版 优化 第二版 优化 第三版 最终输出日志信息 后续改进建议 总…

ubuntu20.04系统4060安装cuda11.8和cudnn8.6

ubuntu20.04系统4060安装cuda11.8和cudnn8.6 一&#xff1a;安装nvidia-driver-525 1&#xff1a;查看本机显卡能够配置的驱动信息 在终端输入&#xff1a; ubuntu-drivers devices2&#xff1a;推荐安装的版本号是&#xff1a; 安装代码&#xff1a; sudo apt install n…

JPA-querydsl增强工具,query-dsl-plus,现在已开源并推送到mvnrepository

前言 由于喜欢使用JPA&#xff0c;所以后续就接触了query-dsl&#xff0c;但是呢&#xff0c;随着需求的变更&#xff0c;数据查询条件也会越来越复杂&#xff08;这个和jpa没关系&#xff0c;就算使用mybatis也一样&#xff09;&#xff0c;往往前端改动了&#xff0c;后端还…

【亲测】python 安装 pillow报错 如何处理

今天在新系统上安装pillow库&#xff0c;提示错误&#xff1a; WARNING: Retrying (Retry(total4, connectNone, readNone, redirectNone, statusNone)) after connection broken by SSLError(SSLEOFError(8, EOF occurred in violation of protocol (_ssl.c:997))): /simple/…

LangChain_ChatGLM部署

环境准备 项目地址&#xff1a;https://github.com/imClumsyPanda/langchain-ChatGLM 下载chatglm-6b模型到本地&#xff0c;大约13G&#xff1a; https://huggingface.co/THUDM/chatglm-6b 里面的文件需要一个个手动点击下载&#xff0c;点击下载时&#xff0c;可能需要多次点…