但现在有个问题是我用MeasureString计算每行能显示的字符个数的时候,文本内容不一样的时候,返回的个数是不一样的。
如果是纯汉字的,返回8,如果带了写数字或者标点符号的时候是5。而我需要根据这个数字去分段原始的文本,假设是后者的情况,如下图

看空间明明可以再显示字符的,可是被换行了。如果顺着这个现象,我似乎应该计算那些显示宽度比较窄的字符,把它们算做半个字符,这似乎也太麻烦了。不知道有什么方法可以简单的解决这个问题,或者能直接解决最原始的问题就更好了。
谢谢!
//
// 将文本分段显示,以控制行间距
//
const Gdiplus::SizeF layout_size(rect.Width, font.GetHeight(&graph));
Gdiplus::SizeF size;
std::wstring remain_text = text; // 当前剩余显示的文本
for (unsigned int i = 0; i < kMaxLineCount; ++i)
{
int char_count = 0; // 当前行能显示的字符个数
Gdiplus::Status status = graph.MeasureString(
remain_text.c_str(),
remain_text.length(),
&font,
layout_size,
&format,
&size,
&char_count,
NULL);
if (char_count > 0)
{
// 截取当前行可以显示的文本并显示
std::wstring substr = remain_text.substr(0, char_count);
Gdiplus::RectF subrc(rect.X, rect.Y + i * kLineHeight, layout_size.Width, layout_size.Height);
graph.DrawString(substr.c_str(), substr.length(), &font, subrc, &format, &brush);
// 更新剩余文本信息
remain_text.erase(0, char_count);
if (remain_text.empty())
break;
}
else
{
break;
}
}
字体、字体系列基本概念与构造 字体系列 GDI+中将具有相同字样、包括不同风格的字体称为字体系列。字体从其系列中获得名称、重量(如粗体、规则、加亮)以及风格。...在GDI+中输出文本之前,需要构造一个
在使用 Gdiplus 绘制文本时, 偶尔会遇到需要支持绘制格式化文本的时候,而 Gdiplus 在这方面并不好,没有官方提供支持的类,也不支持 HTML 标签和 CSS 的样式. 而大部分提供这类富文本的绘制目前我所知道的一种就是...
GDI 与 GDIPlus 获取文字宽度和高度的方法 /// GDI获得字体宽度的方法 CClientDC dc(this); CFont font; //Requested font height in tenths of a point. //For instance, pass 120 to request a 12...
GDI+(Graphics Device Interface Plus图形设备接口加)是Windows XP和Windows Server 2003操作系统的子系统,也是.NET框架的重要组成部分,负责在屏幕和打印机上绘制图形图像和显示信息。 GDI+不但在功能上比GDI ...
加载库文件: #pragma comment(lib,"gdiplus.lib") //也可以在设置中添加 使用名字空间(可无): using namespace Gdiplus; 定义用到的两变量: GdiplusStartupInput m_gdiplusStartupInput;//gdi+版本信息...
主要是要将一个标题和几段文字绘制到固定大小的图片上,如果一张放不下就生成多张。在使用DrawString是发现无法控制行距 namespace TibetTest { public class Utils { // } public class ConvertImage { public ...
【GDI+】2048游戏 2048游戏在今年年初的时候风靡天下,作为一个程序员,在玩别人写的游戏的同时也想着用自己的方式来实现一下。由于只是做一个简单Demo,所以选择了MFC配合...- 1 游戏区域内随机出现分值为2或4...
它负责在屏幕和打印机上显示信息。GDI+ 是一个应用程序编程接口,它是一个C++ 类。 如同它的名字暗示一样,GDI+ 是Windows 图形设备接口(GDI)的继承者, 这个图形设备接口包括早期的Windows版本。 Windows XP ...
前几天,一个朋友请求帮忙处理个LED图片生成问题,主要是要将一个标题和几段文字绘制到固定大小的图片上,如果一张放不下就生成多张。在使用DrawString是发现无法控制行距,请教了baidu大神找到了...
GDI+(Graphics Device Interface Plus图形设备接口加)是Windows XP和Windows Server 2003操作系统的子系统,也是.NET框架的重要组成部分,负责在屏幕和打印机上绘制图形图像和显示信息。 GDI+不但在功能上比GDI...
为了方便大量的类似操作,自己动手写了一个简单的类,可实现对类似“控件”接近自动化的管理。 主要的想法如下: 1、实现对图片的自动管理,主要是销毁。 2、简化在对话框类中反复填写的代码工作量。 3、需要考虑...
DuiVision是参考了仿PC管家程序、金山界面库、DuiEngine、DuiLib等多个基于DirectUI的界面库开发的。 本文主要描述如何开发可以用于DuiVision界面库的界面控件,从而对DuiVision界面库进行扩展。
原文地址:http://blog.csdn.net/byxdaz/article/details/5972759
GDI+是Windows XP的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息。 它是一组通过C++类实现的应用程序编程接口。 GDI+对以前的Windows版本中GDI进行了优化,并添加了许多新的功能。作为图形设备接口的GDI...
Windows GDI 教程(一) 一个简单的绘图程序 http://www.tuicool.com/articles/jeMBZ3v 常见的图形编程库,除了 GDI 外还有 GDI+、OpenGL、DirectX等等,GDI 是其中最基础的一个库。所以 GDI 注定了不会有高级...
GDI+是Windows XP的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息。 它是一组通过C++类实现的应用程序编程接口。 GDI+对以前的Windows版本中GDI进行了优化,并添加了许多新的功能。作为图形设备接口的...
一个简单的GDI+例子。 简单绘制极坐标系,按类似的思路,可以画直角坐标系、对数直角系、外太空银河系…… 先把最后效果贴出来,觉得不需要的请按Alt+F4。 图中曲线是一个天线方向图,非常适合在极坐标下描绘。...
为什么80%的码农都做不了架构师?>>> ...
是Windows XP中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过C++类实现的应用程序编程接口。GDI+对以前的Windows版本中GDI进行了优化,并添加了许多新的功能。作为图形设备接口的GDI+...
MFC CListCtrl 显示图片模式需要关联CImageList,并且增加背景图片(抓狂三天,比网上自绘完美) 头文件定义 CImageList* ListImages; CListCtrl *ListIcons; CPP 初始化列表 CRect rect; GetClientRect(&...
GDI+编程说明及小结...GDI+(Graphics Device Interface Plus图形设备接口加)是Windows XP和Windows Server 2003操作系统的子系统,也是.NET框架的重要组成部分,负责在屏幕和打印机上绘制图形图像和显示信息。 GD
jdk1.8 64位官方正式版 jdk-8u91-windows
包括3个大项目和若干衍生项目,涵盖:数码相框、电子书、指针、链表、Makefile、网络编程Socket、USB摄像头、CMOS摄像头、视频监控、WIFI、3G网卡、ALSA声卡、便携式视频监控(
C#入门必看含有100个例字,每个例子都是针对C#的学习关键知识点设计的,是学习C#必须知道的一些程序例子,分享给大家,需要的可以下载
这不是rtos源码分析的课程,而是为初级的同学设计,从基础原理讲师,一步步不断迭代设计rtos的课程! 用不到【2000行代码,汇编代码仅18行】(不含注释)实现一个精巧的可以运行在ARM Cortex-M内核芯片上
十个c语言案例 (1)贪吃蛇 (2)五子棋游戏 (3)电话薄管理系统 (4)计算器 (5)万年历 (6)电子表 (7)客户端和服务器通信 (8)潜艇大战游戏 (9)鼠标器程序 (10)手机通讯录系统
2020美赛a题海温数据,1877年至今,趁比赛还没结束上传赚点资源值 全球海洋温度影响某些海洋生物的栖息地质量。当温度变化太大,它们无法继续繁荣时,这些物种就会迁移到其他更适合它们现在和未来生活和繁殖成功的栖息地。其中一个例子就是美国缅因州的龙虾种群,它们正缓慢地向北迁移到加拿大,那里的海洋温度较低,为它们提供了更合适的栖息地。这种地理种群的转移可能会严重影响依赖海洋生物稳定性的公司的生计。 您的团队已被苏格兰北大西洋渔业管理协会聘请为顾问。该协会希望在全球海洋温度升高的情况下,更好地了解与苏格兰鲱鱼和鲭鱼从它们目前的栖息地苏格兰附近迁移有关的问题。这两种鱼类为苏格兰渔业做出了巨大的经济贡献。鲱鱼和鲭鱼种群分布位置的变化,可能会让规模较小的苏格兰渔业公司在经济上变得不切实际。这些公司使用渔船,但船上没有冷藏设备。
非常漂亮的100个前端案例,包含幻灯片切换、图片缩放、相册、放大镜、图片拖着滚动等等,只有你想不到。
董付国老师系列教材《Python程序设计基础》(ISBN:9787302410584)、《Python程序设计(第2版)》(ISBN:9787302436515)、《Python可以这样学》(ISBN:9787302456469)配套视频,通过大量实际案例讲解Pyth
Microsoft office 2016专业增强版是一款由官方发布的Microsoft office办公软件,而且免费开放给所有Windows用户免费使用,其中Excel、word、PPT都非常智能化,界面最新加入暗黑主题,并且按钮的设计风格开始向Windows10靠拢。本平台提供Office 2016专业增强版,需要的朋友可下载试试! Office 2016 专业增强版安装教程 1. 下载