EasyX图形库学习(二)

目录

 一、文字绘制函数

settextstyle  设置当前文字样式。

outtextxy   在指定位置输出字符串。

​编辑

但如果直接使用,可能有以下报错:

三种解决方案:

将一个int类型的分数,输出到图形界面上

如果直接使用:

会把score输入进去根据ASCII转成了字符,如下:

正确做法:

二、文字居中

三、VS中如何使用正常使用scanf(慎用)


 一、文字绘制函数

字体属性结构体:logfont

struct LOGFONT {
	LONG lfHeight;//指定高度(逻辑单位)
	LONG lfWidth //指定字符的平均宽度(逻辑单位)。如果为0,则比例自适应
	LONG lfEscapement;//字符串的书写角度,单位0.1度,默认为0
	LONG lfOrientation;//每个字符的书写角度,单位 0.1 度,默认为 0。
	LONG lfWeight;//字符的笔画粗细,范围 0~1000,0 表示默认粗细,使用数字或下表中定义的宏均可。PS:宏太多就不写了
	BYTE lfItalic;//指定字体是否是斜体。
	BYTE lfUnderline;//指定字体是否有下划线
	BYTE lfStrikeOut;//指定字体是否有删除线
	BYTE lfCharSet;//指定字符集
	BYTE lfOutPrecision;//指定文字的输出精度
	BYTE lfClipPrecision;//指定文字的剪辑精度。
	BYTE lfQuality;//指定文字的输出质量。
	BYTE lfPitchAndFamily;//指定以常规方式描述字体的字体系列。字体系列描述大致的字体外观。字体系列用于在所需精确字体不可用时指定字体。
	TCHAR lfFaceName[LF_FACESIZE];//字体名称,名称不得超过 31 个字符。如果是空字符串,系统将使用第一个满足其它属性的字体。

};

settextstyle  设置当前文字样式。

void settextstyle(
    int nHeight,        //指定高度(逻辑单位)
    int nWidth,        //字符的平均宽度
    LPCTSTR lpszFace      //字体名称。
);

outtextxy   在指定位置输出字符串。

void outtextxy(
    int x,        //字符串输出头字母的 x 轴的坐标值
    int y,        //头字母的 y 轴的坐标值
    TCHAR c        //待输出的字符
);

字符串常见的编码有两种:MBCS 和 Unicode。VC6 新建的项目默认为 MBCS 编码,VC2008 及高版本的 VC 默认为 Unicode 编码。LPCTSTR 可以同时适应两种编码。为了适应两种编码,请使用 TCHAR 字符串及相关函数。

默认情况下,输出字符串的背景会用当前背景色填充。使用函数 setbkmode 可以设置文字的背景部分保持透明或使用背景色填充。

settextstyle(48, 0, "微软雅黑");
//设置文字颜色
settextcolor(BROWN);
//绘制文字
outtextxy(10, 20, "Hello World");

但如果直接使用,可能有以下报错:

C2665:"outtextxy":2个重载没有一个可以转换所有参数类型

原因:EasyX与字符串相关的函数,都有字符集问题   UNICODE  多字节字符集

三种解决方案:

1.在字符串的前面使用L进行转换        强制转换

2.用带参宏(_T(),_TEXT())把字符串包裹起来    自适应转换    推荐使用

3.菜单栏->项目->属性->高级->字符集->把UNICODE改成多字节字符集    大力推荐

将一个int类型的分数,输出到图形界面上

如果直接使用:

void draeTest()
{
	settextstyle(48, 0, "微软雅黑");
	//设置文字颜色
	settextcolor(BROWN);

	settextstyle(30, 0, "微软雅黑");
	//现在有一个int类型的分数,需要输出到图形界面上
	int score = 66;
	//直接使用
	outtextxy(getwidth() - 100, 0, score);//把score输入进去转成了字符
}

会把score输入进去根据ASCII转成了字符,如下:

正确做法:

使用sprintf_s(str,"Score:%d", score);把score格式化成字符串

void drawTest()
{
	settextstyle(48, 0, "微软雅黑");
	//设置文字颜色
	settextcolor(BROWN);

	settextstyle(30, 0, "微软雅黑");
	//现在有一个int类型的分数,需要输出到图形界面上
	int score = 66;
	//直接使用
	//outtextxy(getwidth() - 100, 0, score);//把score输入进去转成了字符
	//要格式化成字符串
	char str[50] = "";
	//格式字符串
	sprintf_s(str,"Score:%d", score);
	outtextxy(getwidth() - 100, 0, str);

}

void drawTest()
{

	printf("hello,EasyX!");
	//设置文字大小
	settextstyle(48, 0, "微软雅黑");
	//设置文字颜色
	settextcolor(BROWN);
	//绘制文字
	outtextxy(10, 20, "Hello World");
	//error	 C2665:"outtextxy":2个重载没有一个可以转换所有参数类型
	//EasyX与字符串相关的函数,都有字符集问题   UNICODE  多字节字符集
	
	/*	三种解决方法
	* 1.在字符串的前面使用L进行转换		强制转换
	* 2.用带参宏(_T(),_TEXT())把字符串包裹起来	自适应转换	推荐使用
	* 3.菜单栏->项目->属性->高级->字符集->把UNICODE改成多字节字符集	大力推荐
	*/

	settextstyle(30, 0, "微软雅黑");
	//现在有一个int类型的分数,需要输出到图形界面上
	int score = 66;
	//直接使用
	//outtextxy(getwidth() - 100, 0, score);//把score输入进去转成了字符
	//要格式化成字符串
	char str[50] = "";
	//格式字符串
	sprintf_s(str,"Score:%d", score);
	outtextxy(getwidth() - 100, 0, score);

}

二、文字居中

int rx = 130;      // 矩形左上角x坐标  
int ry = 380;      // 矩形左上角y坐标  
int rw = 300;      // 矩形宽度  
int rh = 60;       // 矩形高度 

 int hSpace = (rw - textwidth(str1)) / 2; // 计算水平居中的间距  
 int vSpace = (rh - textheight(str1)) / 2; // 计算垂直居中的间距

textwidth
该字符串实际占用的像素宽度。
textheight
该字符串实际占用的像素高度。

void centerText()
//文字居中
{
	//来一个矩形
	int rx = 130;
	int ry = 380;
	int rw = 300;
	int rh = 60;
	setfillcolor(RGB(230, 231, 232));
	fillrectangle(rx,ry,rx+rw,ry+rh);

	//绘制文字
	settextcolor(RED);

	char str1[] = "Centet Text";
	int hSpace = (rw - textwidth(str1)) / 2;
	int vSpace = (rh - textheight(str1)) / 2;

	outtextxy(rx+hSpace, ry+vSpace, str1);

}

三、VS中如何使用正常使用scanf(慎用)

打开项目->属性->C/C++常规->SDL检查->否->应用

或者在加入#define  _CRT_SECURE_NO_WARNINGS 1

今天就先到这了!!!

看到这里了还不给博主扣个:
⛳️ 点赞☀️收藏 ⭐️ 关注!

你们的点赞就是博主更新最大的动力!
有问题可以评论或者私信呢秒回哦。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

被人疯狂吐槽的预制菜,居然是资本看重的“万亿级”市场?

被人疯狂吐槽的预制菜,居然是资本看重的“万亿级”市场? 文丨微三云营销总监胡佳东,点击上方“关注”,为你分享市场商业模式电商干货。 - 大家是不是以为只有被天天吐槽难吃的外卖和小饭店,才会用预制菜,…

#从零开始# 在深度学习环境中,如何用 pycharm配置使用 pipenv 虚拟环境

为Python项目创建虚拟环境 在深度学习环境和一般python环境中安装pipenv基本一致,只需要确认好pipenv指定的python版本即可,安装pipenv前,可以通过python --version来确认安装版本 快捷键:crtl alt S 查看interpreter,查看所有…

代码随想录算法训练营第42天 | 01背包问题,你该了解这些! 01背包问题,你该了解这些! 滚动数组 416. 分割等和子集

目录 01背包问题,你该了解这些! 01 背包 二维dp数组01背包 💻实现代码 01背包问题,你该了解这些! 滚动数组 一维dp数组(滚动数组) 💻实现代码 416. 分割等和子集 &#x1f…

《Numpy 简易速速上手小册》第9章:Numpy 在机器学习中的应用(2024 最新版)

文章目录 9.1 数据预处理9.1.1 基础知识9.1.2 完整案例:数据标准化9.1.3 拓展案例 1:缺失值处理9.1.4 拓展案例 2:非数值数据的转换 9.2 特征提取和处理9.2.1 基础知识9.2.2 完整案例:特征归一化9.2.3 拓展案例 1:特征…

MySQL知识点总结:构建可靠高性能的关系型数据库

摘要:MySQL是一款广泛使用的开源关系型数据库管理系统,具备可靠性和高性能的特点。本文将总结MySQL的一些重要知识点,帮助读者了解如何使用MySQL构建可靠高性能的关系型数据库。 正文: ### 1. 数据类型 MySQL支持多种数据类型&…

SpringBoot整合Activiti7—— 补偿边界/补偿中间事件(十五)

文章目录 补偿边界/补偿中间事件代码实现xml文件测试流程流程执行步骤 补偿边界/补偿中间事件 补偿事件可以被触发来回滚或修复之前已经完成的任务或活动。 补偿事件通常与错误边界事件(Error Boundary Event)结合使用。当任务或活动发生异常时&#xff…

SQL sever2008中创建用户并赋权

一、创建数据库dream CREATE DATABASE dream; 二、创建登录用户XZS 法一:使用SSMS创建 通过查询 sys.syslogins 系统视图来确定当前登录是否具有系统管理员权限。执行以下查询语句: SELECT name, isntname FROM sys.syslogins WHERE sysadmin 1;选…

Android Studio从零基础到APP上线(3)

第3章 简单控件 本章介绍App开发常见的几类简单控件的用法,主要包括:显示文字的文本视图,容纳视图的常用布局,响应点击的按钮控件,显示图片的图像视图等。然后结合本章所学的知识,演示一个实战项目“简单计算器”的设计与实现。 3.1 文本显示 本节介绍如何在文本视图Tex…

Jmeter,如何从数组参数中取值

有个post请求,参数“equipment_ids”,是个数组,需求每次执行的时候,按顺序取equipment_ids中不同的值 要实现在 JMeter 中每次执行请求时按顺序取不同的 equipment_ids 中的值,你可以使用 Counter 元件来生成索引&…

【面试深度解析】掌上先机后端面试(Java基础能力夯实)

欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送! 在我后台回复 「资料」 可领取编程高频电子书! 在我后台回复「面试」可领取硬核面试笔记! 文章导读地址…

HTML音频标签

新增的语义化的标签: 即直接给了一个具象化的盒子。 新增的多媒体标签: 视频格式: 当都不支持的时候会显示文字。 video仍然是可以看成一个盒子。 音频格式: 新增的input 表单控件: 新增的表单属性: 提示文…

MyBatis 的XML实现方法

MyBatis 的XML实现方法 MyBatis 的XML实现方法前情提示创建mapper接口添加配置创建xml文件操作数据库insert标签delete标签select标签resultMap标签 update标签sql标签,include标签 MyBatis 的XML实现方法 前情提示 关于mybatis的重要准备工作,请看MyBatis 的注解实现方法 创…

Java SWT Composite 绘画

Java SWT Composite 绘画 1 Java SWT2 Java 图形框架 AWT、Swing、SWT、JavaFX2.1 Java AWT (Abstract Window Toolkit)2.2 Java Swing2.3 Java SWT (Standard Widget Toolkit)2.4 Java JavaFX 3 比较和总结 1 Java SWT Java SWT(Standard Widget Toolkit&#xff…

Power BI案例-链接Mysql方法

Power BI案例-连锁Mysql 方法1-通过组件mysql-connector-net-8.3.0: 选择文件–获取数据–选择MySQL数据库–选择链接 提示无组件,选择了解详细情况 弹出浏览器,选择下载 不用登陆,可以直接下载 下载的组件如下&#xff1a…

【开源】基于JAVA+Vue+SpringBoot的陕西非物质文化遗产网站

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 设计目标2.2 研究内容2.3 研究方法与过程2.3.1 系统设计2.3.2 查阅文献2.3.3 网站分析2.3.4 网站设计2.3.5 网站实现2.3.6 系统测试与效果分析 三、系统展示四、核心代码4.1 查询民间文学4.2 查询传统音乐4.3 增改传统舞…

代码随想录算法训练营Day46|139.单词拆分、多重背包理论基础、背包问题总结

目录 139.单词拆分 方法一:回溯法 算法实现 方法二:背包问题 算法实现 多重背包理论基础 思路 算法实现 背包问题总结 前言 背包递推公式 遍历顺序 0-1背包 完全背包 139.单词拆分 题目链接 文章链接 方法一:回溯法 在回溯专题…

Endnote常见设置(硕士毕业论文参考文献修改)

1、根据大多数期刊或学校使用的标准,英文名首字母大写后续字母小写。 2、需要手动调整Endnote中的参考文献相关内容 3、关于姓名大小写设置 AS IS是不更改大小写,EndNote库中文献的大小是什么样,Word中就显示什么样。选择Normal为首字母大…

HDMI2.1之eARC简介-Dolby Atmos和DTS:X

文章目录 eARC目的更大的带宽更高质量音频支持对象型音频与CEC(Consumer Electronics Control)的兼容性: 适应流媒体发展Dolby AtmosDTS:X高分辨率音频更高的音频位深度和采样率低延迟音频 对象型音频格式独立对象三维定位动态音场适应性和灵…

嵌入式——串行外围设备接口(SPI)

目录 一、初识SPI 1. 介绍 2. 特性 补: 二、物理层 1. SS (Slave Select) 2. SCK (Serial Clock) 3. MOSI (Master Output, Slave Input) 4. MISO (Master Input&#xff0…

虚拟机Windows Server 2016 安装 MySQL8

目录 一、下载MySQL8 1.下载地址: 2.创建my.ini文件 二、安装步骤 第一步:命令窗口 第二步:切换目录 第三步:安装服务 第四步:生成临时密码 第五步:启动服务 第六步: 修改密码 三…