MFC文本输出学习

news/2024/11/15 2:19:47/
void CTxttstView::OnDraw(CDC* pDC)
{CTxttstDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereCString str1;pDC->SetBkColor(RGB(0,0,0));pDC->TextOut(50, 50, "一段文字");pDC->SetBkColor(RGB(255,255,255));pDC->TextOut(150, 50, "一段文字");pDC->SetBkColor(RGB(0,128,0));pDC->TextOut(250, 50, "一段文字");pDC->SetBkColor(RGB(0,160,0));pDC->TextOut(450, 50, "测试一段文字测试AAAAAAA");pDC->SetBkColor(RGB(0,180,0));pDC->TextOut(50, 80, "一段文字2", 4);pDC->SetTextAlign(TA_LEFT);pDC->SetBkColor(RGB(0,180,0));pDC->TextOut(50, 110, "一段文字3");CRect r1(50,150,200,200);pDC->Rectangle(r1);pDC->DrawText("一段文字d", r1, DT_SINGLELINE | DT_CENTER | DT_VCENTER);CRect r2(50,210,200,260);pDC->Rectangle(r2);pDC->DrawText("一段文字d", r2, DT_SINGLELINE | DT_LEFT | DT_VCENTER);CRect r3(50,270,200,320);pDC->Rectangle(r3);pDC->DrawText("一段文字d", r3, DT_SINGLELINE | DT_RIGHT | DT_VCENTER);int iArray[] = {100,200,300,400,500};pDC->TabbedTextOut(10,340,TEXT("测试\t中文\t你好\t汉字\t在这\t里!"),-1,5,iArray,0);pDC->TextOut(10, 360, TEXT("测试\t中文\t你好\t汉字\t在这\t里!"));int iArray2[] = {10,20,30,40,50};pDC->TabbedTextOut(10,380,TEXT("测试\t中文\t你好\t汉字\t在这\t里!"),-1,5,iArray2,0);}

 

获取了CDC类指针之后可以设置一些属性,再输出文字;

SetBkColor(RGB(0,0,0)),这样设置文本输出背景色;对于TextOut来说设置背景的区域和输出文字的区域一样大小;

TextOut一般用前3个参数,x坐标、y坐标、输出的文字,也可以使用第4个参数,输出多少个字符;pDC->TextOut(50, 80, "一段文字2", 4),一个汉字是2个字符,这只输出了“一段”;

SetTextAlign,设置文本对齐方式,对于TextOut没有什么效果;

DrawText在一个矩形内输出文字,第一个参数是要输出的文字,第二个参数是一个矩形,第三个参数是文字对齐等一些属性;图中的矩形是额外画的,为了看到DrawText效果;第二个参数如果是用CRect类定义的,CRect r1(50,150,200,200) 这样,直接传递r1就可;

TabbedTextOut 函数在指定位置写入字符串,将制表符扩展到制表位位置数组中指定的值;

我还不太理解此函数;

pDC->TabbedTextOut(10,340,TEXT("测试\t中文\t你好\t汉字\t在这\t里!"),-1,5,iArray,0);

头2个参数是x和y坐标,第三个参数是要输出的文字,可以包含制表符\t;后一个参数是要输出的文字长度,-1表示全部输出;此函数需要一个整型数组作为参数,再后一个参数是数组中的值数,再后一个参数是数组的指针;

根据文档,数组是制表位位置(以逻辑单元为单位)的数组; 制表位必须按升序排列,最小的 x 值应该是数组中的第一项;

最后一个参数是展开制表符的起始位置的 x 坐标(以逻辑单元为单位);

从效果看制表符对TextOut无效;传2个不同数组的效果如图;

另外还有一个ExtTextOut函数是在TextOut的基础上增加了字符间距、背景颜色和裁剪框进行控制;有时间再看;

 


http://www.ppmy.cn/news/1141516.html

相关文章

209.Flink(四):状态,按键分区,算子状态,状态后端。容错机制,检查点,保存点。状态一致性。flink与kafka整合

一、状态 1.概述 算子任务可以分为有状态、无状态两种。 无状态:filter,map这种,每次都是独立事件有状态:sum这种,每次处理数据需要额外一个状态值来辅助。这个额外的值就叫“状态”2.状态的分类 (1)托管状态(Managed State)和原始状态(Raw State) 托管状态就是由…

优秀程序员是怎么思考的?

首发日更公 Z 号:十二又十三 作为一名优秀的程序员,思考是我们工作中最重要的一部分。它不仅能够帮助我们解决问题,还能够提升我们的技术水平和职业发展。那么,优秀程序员是如何思考的呢?本文将为您介绍一个思考框架和…

Day4:Linux系统编程1-60P

我的学习方法是:Linux系统编程(看pdf笔记) Linux网络编程 WebServer 01P-17P Linux相关命令及操作 cp -a dirname1 dirname2 复制目录 cp -r dirname1 dirname2 递归复制目录 1 到目录 2 这里-a 和-r 的差别在于,-a 是完全复制…

Sql server 使用DBCC Shrinkfile 收缩日志文件

磁盘空间有限,需要收缩日志文件释放空间。 数据库名称上右击属性->文件,逻辑名称日志文件默认名称为“_log”结尾。 alter database 数据库 set recovery simple dbcc shrinkfile(XXX_log,2,truncateonly) alter database 数据库 set recovery full

NPDP产品经理知识(产品创新种的市场调研)

1. 复习产品设计与开发工具 创意生成: scamper也叫蹦蹦法 心智图就是思维导图:mindmaping 原型法--故事板:创意生成的时候做的 人种学--民族志 六顶思考帽:白色红色黑色蓝色。。。 概念设计: AOMI:卡…

理解自动驾驶感知技术

理解自动驾驶感知技术 文章目录 什么是自动驾驶感知技术?自动驾驶感知技术的关键组成部分1. 雷达(Radar)2. 摄像头(Camera)3. 激光雷达(Lidar)4. 超声波传感器(Ultrasonic Sensors&a…

Springboot项目log4j与logback的Jar包冲突问题

异常信息关键词: SLF4J: Class path contains multiple SLF4J bindings. ERROR in ch.qos.logback.core.joran.spi.Interpreter24:14 - no applicable action for [properties], current ElementPath is [[configuration][properties]] 详细异常信息&#xff1a…

三十二、【进阶】hash索引结构

1、hash索引结构 (1)简述: hash索引,就是采用一定的hash算法,将键值换算成新的hash值,映射到对应的槽位上,然后存储在hash表中。 (2)图示: 2、hash索引结构…