实例116 旋转的文字

news2024/11/25 4:20:41

本文仅供学习交流,严禁用于商业用途,如本文涉及侵权请及时联系将于24小时内删除

目录

1.实例说明

2.技术要点

3.实现过程

4.举一反三


3.7 图像字体

字体在图形、图像处理中具有举足轻重的作用,特殊的字体能够增加图像的显示效果。本节将通过几个实例介绍如何绘制特殊效果的字体。

实例116 旋转的文字

1.实例说明

在一些多媒体应用软件中,一些文字信息并不是按水平方向或垂直方向显示,而是按一定的角度倾斜显示,效果很好。本实例实现了文字的旋转,效果如图所示。

2.技术要点

实现字体的旋转非常简单,首先创建一个字体,在创建字体时指定倾斜角度,然后利用设备上下文选中字体,最后输出文字,这样文字就会在某一位置上按照字体指定的角度倾斜。创建一个字体可以调用CFont类的CreateFont方法,语法如下:

BOOL CreateFont(int nHeight,int nWidth,int nEscapement,int nOrientation,int nWeight,BYTE bItalic,BYTE bUnderline,BYTE cStrikeOut,BYTE nCharSet,BYTE nOutPrecision,BYTE nClipPrecision,BYTE nQuality, BYTE nPitchAndFamily,LPCTSTR lpszFacename);
参数说明:
● nHeight、nWidth:用于指定字体的高度和宽度。为正数时,字体映射机制会根据指定的高度或宽度从字体列表中选择一种接近的字体,以该字体的单元高度或宽度为参考。为负数时,字体映射机制也会选择一种字体,不过这时以字体字符高度或宽度为参考。单元是在实际输出字符的上下有一些空隙,而字符是忽略掉这些空隙之后的单元高度。
● nEscapement:以x轴为参考确定文本的倾斜角度。
● nOrientation:确定字符基线与x轴的倾斜角度。
● nWeight:确定字体的重量,即字体的粗细程度。
● bItalic:确定是否是斜体。
● bUnderline:确定是否有下划线。
● cStrikeOut:确定是否有删除线。
● nCharSet:用于指定字符集。
● nOutPrecision:确定字体映射机制如何根据提供的参数选择合适的字体。
● nClipPrecision:用于确定字体的裁减精度。当文本的一部分延伸到指定区域外时,该参数用于确定文本被裁减的方式。
● nQuality:用于确定字体显示的品质。
● nPitchAndFamily:用于确定字符间距和字体属性。
● lpszFacename:确定字体名称。

例如实现一个简单的旋转文字,代码如下:

CFont m_font;
        m_font.CreateFont(-14,-10,i*10,0,600,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,
        CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FF_ROMAN,"宋体");

3.实现过程

(1)新建一个基于对话框的应用程序。

(2)主要程序代码如下:

void C旋转字体Dlg::OnBnClickedBtn1()
{
	// TODO:  在此添加控件通知处理程序代码
	CDC*pDC = GetDC();                                                            //获得设备上下文
	CFont m_font;
	pDC->SetBkMode(TRANSPARENT);                                                //设置背景透明
	CRect m_rect;
	GetClientRect(m_rect);                                                      //获得客户区域
	pDC->FillRect(m_rect, NULL);                                                 //填充区域
	pDC->SetViewportOrg(m_rect.Width() / 2, m_rect.Height() / 2);                    //设置原点
	for (int i = 1; i< 360; i += 18)
	{
		m_font.CreateFont(-14, -10, i * 10, 0, 600, 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
			CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_ROMAN, _T("宋体"));               //创建字体
		pDC->SelectObject(&m_font);                                             //选入字体
		pDC->SetTextColor(RGB(255 - i, i * 50, i));                                   //设置文本颜色
		pDC->TextOut(0, 0, _T("战无不胜的毛泽东思想万岁"));                                   //输出文本
		m_font.DeleteObject();
	}
}

(3)运行结果

4.举一反三

根据本实例,读者可以:

修改任意控件的字体属性

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

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

相关文章

Win11安装Docker Desktop运行Oracle 11g 【详细版】

oracle docker版本安装教程 步骤拉取镜像运行镜像进入数据库配置连接数据库&#xff0c;修改密码Navicat连接数据库 步骤 拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g运行镜像 docker run -d -p 1521:1521 --name oracle11g registry.cn-ha…

设备驱动中device_create函数与sys/devices目录

当调用device_create时parent参数为空时&#xff0c;新添加的设备位于sys/devices//sys/devices/virtual目录 以下面代码的为例 my_newcharled.myclass class_create(THIS_MODULE,dtled); my_newcharled.mydevice device_create(my_newcharled.myclass,NULL,my_newcharled.ne…

艾体宝方案 | 加密USB金融解决方案

在现代金融行业中&#xff0c;保护敏感数据和合规性已成为至关重要的任务。为了帮助金融公司应对移动性风险和合规挑战&#xff0c;我们提供了一种高效的加密USB解决方案。 一、为什么金融公司需要加密USB解决方案 1、降低移动性风险 金融服务公司正在迅速过渡到一种模式&a…

访问学者在外访学期间,是否可以中途回国?

在全球化的今天&#xff0c;访问学者制度已成为促进国际学术交流与合作的重要桥梁。然而&#xff0c;对于许多国外访问学者来说&#xff0c;一个常见的问题是&#xff1a;在访学期间&#xff0c;我是否可以中途回国&#xff1f;这个问题涉及到多个方面&#xff0c;包括政策法规…

Linux系统编程之基本指令

零、Linux发展史 1、诞生 1991年10月5日&#xff0c;赫尔辛基大学的一名研究生Linus Benedict Torvalds在一个Usenet新闻组 &#xff08;comp.os.minix&#xff09;中宣布他编制出了一种类似UNIX的小操作系统&#xff0c;叫Linux。新的操作系统是受到另一个UNIX的小操作系统—…

Windows 系统使用Jenkins 实现CI一键打包部署操作

一 下载安装jenkins jenkins 中文官网链接: 下载地址 点击下载&#xff0c;完成后是一个.msi后缀的安装文件&#xff0c;双击安装 安装和普通软件一样&#xff0c;一路next&#xff0c;安装路径自己设置一下&#xff0c;默认是C盘&#xff0c;我C盘不够用了&#xff0c;设置…

【漏洞复现】用友时空KSOA linkadd接口处存在 SQL注入漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

【LAMMPS学习】八、基础知识(5.7)Drude感应偶极子

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

【前端】HTML基础(3)

文章目录 前言一、HTML基础1、表格标签1.1 基本使用1.2 合并单元格 2、列表标签2.1 无序列表2.2 有序列表2.3 自定义列表 3、 表单标签2.1 form标签2.2 input标签2.3 label标签2.4 select标签2.5 textarea标签 4、无语义标签5、HTML特殊字符 前言 这篇博客仅仅是对HTML的基本结…

有关NSA和SA及CA图解

1、NSA 2、SA 3、CA 觉得本文对您有用&#xff0c;麻烦点赞、关注、收藏&#xff0c;您的肯定是我创作的无限动力&#xff0c;谢谢&#xff01;&#xff01;&#xff01;

实验10配置 IPv4 和 IPv6 静态和 默认路由(课内实验)

上面这个是实验描述 下面是给的实验图 接下来我们跟着实验一步一步进行下去 第 1 部分&#xff1a;配置 IPv4 静态和 浮动静态默认路由配置ipv4静态路由&#xff1a;配置 IPv4静态和 浮动静态默认路由 步骤 1&#xff1a;配置一条 IPv4 静态 默认路由。在 Edge_Router 上&am…

展厅设计制作流程是怎样的

一、前期资料需求对接 首先要找公司做展厅设计就需要先准备好一系列资料&#xff0c;展厅场地CAD图纸、场地实景照片或视频&#xff08;有最好&#xff0c;没有需提供CAD图纸&#xff09;、项目预算、展厅侧重展示内容、公司介绍PPT、官网等一些公司资料。 二、出具概念方案 提…

中仕公考:三支一扶期满入编吗?

三支一扶是guo家度对基层选择人才的一种方式&#xff0c;有两年的服务期。 三支一扶两年期满后会有编制吗?具体是否能入编还要看所在地区的规定。 例如山东省、河南省规定三支一扶期满且考核合格的人员可以落实事业编制;其他地区则需要通过其他考试才能获取编制&#xff0c;…

AFG31000系列AFG31052、AFG31051 任意函数发生器

Tektronix AFG31052 任意函数发生器&#xff0c;50 MHz&#xff0c;2 通道&#xff0c;500 MS/s ​ 采用 InstaView™ 技术的 AFG31000 系列为内置波形发生应用程序、具有实时波形监测功能并采用智能用户界面的首款高性能任意波函数发生器。 验证连接 DUT 后输出波形 InstaV…

python从0开始学习(四)

目录 前言 1、算数运算符 1.1 //:整除运算符 1.2 %:取模操作 1.3 **&#xff1a;幂运算 2、赋值运算符 3、比较运算符 4、逻辑运算符 5、位运算符 5.1 &&#xff1a;按位与 5.2 |&#xff1a;按位或 5.3 ^&#xff1a;按位异或 5.4 ~&#xff1a;按位取反 5.5…

今日分享【微信小程序中一个左右摇摆的小灯泡】

1、废话少说&#xff0c;先上效果&#xff1a; 2、具体实现代码如下&#xff1a; wxml <view class"con {{off?off:}}" catchtap"close"><view class"box {{off?off:}}"><view class"box_view {{off?off:}}">…

【Node.js工程师养成计划】之express中间件与接口规范

一、Express中间件的概念与基本应用 const express require(express)// 加一个注释&#xff0c;用以说明&#xff0c;本项目代码可以任意定制更改 const app express()const PORT process.env.PORT || 3000// // 挂载路由 // app.use(/api, router)// // 挂载统一处理服务端…

【数据结构】树和二叉树基本概念和性质

目录 前言1、树的概念1.1 树的基本概念1.2 树的主要概念1.3 树的表示1.4 树在实际中的运用&#xff08;表示文件系统的目录树结构&#xff09; 2. 二叉树概念及结构2.1 概念2.2 特殊的二叉树2.3 二叉树的性质 3. 二叉树性质相关选择题练习4. 答案和解析5. 总结 前言 本章带来数…

Golang | Leetcode Golang题解之第68题文本左右对齐

题目&#xff1a; 题解&#xff1a; // blank 返回长度为 n 的由空格组成的字符串 func blank(n int) string {return strings.Repeat(" ", n) }func fullJustify(words []string, maxWidth int) (ans []string) {right, n : 0, len(words)for {left : right // 当前…

【智能算法应用】麻雀搜索算法求解非线性方程组问题

目录 1.算法原理2.数学模型3.结果展示4.代码获取 1.算法原理 【智能算法】麻雀搜索算法&#xff08;SSA&#xff09;原理及实现 2.数学模型 非线性方程组为&#xff1a; 2 x 1 − x 2 e − x 1 − x 1 2 x 2 e − x 2 (1) \begin{aligned}&2x_1-x_2e^{-x_1}\\&-…