需要说明的是,在GDI+中,我们可以通过SetTextRenderingHint来控制文本输出的质量。例如下面的代码,其结果如图7.15所示。

Graphics graphics( pDC->m_hDC );

FontFamily fontFamily(L"楷体_GB2312");
Font font(&fontFamily, 30, FontStyleRegular, UnitPixel);
SolidBrush solidBrush(Color(255, 0, 0, 255));
WCHAR string1[] = L"没有任何优化处理";
WCHAR string2[] = L"字体优化,但边不作平滑处理";
WCHAR string3[] = L"消除走样,且边作平滑处理";

graphics.SetTextRenderingHint(TextRenderingHintSingleBitPerPixel);
graphics.DrawString(
string1, (INT)wcslen(string1), &font, PointF(10, 10), &solidBrush);

graphics.SetTextRenderingHint(TextRenderingHintSingleBitPerPixelGridFit);
graphics.DrawString(
string2, (INT)wcslen(string2), &font, PointF(10, 50), &solidBrush);

graphics.SetTextRenderingHint(TextRenderingHintAntiAliasGridFit);
graphics.DrawString(
string3, (INT)wcslen(string3), &font, PointF(10, 90), &solidBrush);


文本格式化属性

文本的格式属性通常包括对齐方式、字符间隔以及文本调整等。GDI+提供StringFormat类来控制这些格式属性,通常我们调用以下几个函数来进行相关属性设置。

Status SetAlignment( StringAlignment align);
Status SetLineAlignment( StringAlignment align);

该函数用来设置文本对齐方式,align可以是StringAlignmentNear(左对齐或右对齐,取决于书写方向是从左到右还是从右到左)、StringAlignmentCenter(居中)或StringAlignmentFar(两端对齐)。

Status SetFormatFlags( INT flags );

该函数用来设置文本格式化标志,flags可以是StringFormatFlagsDirectionRightToLeft(水平阅读方 向是从右向左)和StringFormatFlagsDirectionVertical(垂直文本)等值。例如下面的代码,其结果如图7.16所示。

Graphics graphics( pDC->m_hDC );
SolidBrush solidBrush(Color::Blue);
FontFamily fontFamily(L"楷体_GB2312");
Font font(&fontFamily, 16, FontStyleRegular, UnitPoint);

StringFormat stringFormat;
stringFormat.SetFormatFlags( StringFormatFlagsDirectionRightToLeft |
StringFormatFlagsDirectionVertical |
StringFormatFlagsNoFitBlackBox);
stringFormat.SetAlignment(StringAlignmentCenter);
WCHAR string[] = L"这些文字是垂直居中且是从右到左的阅读次序, 它们是通过 \
SetFormatFlags和SetAlignment来设置的!";

graphics.DrawString( string, (INT)wcslen(string), &font,
RectF(30, 30, 150, 200), &stringFormat, &solidBrush);

记录GDI 文本的设置的更多相关文章

  1. Dynamic CRM插件中记录日志-Nlog记录到文本

    Dynamic CRM插件中记录日志的方式有多种 通常情况下分为ITracingService记录.单独日志表插入记录.文本记录三种. 之前整理过ITracingService记录的方式,但这种记录有 ...

  2. Linux下长时间ping网络加时间戳并记录到文本

    Linux下长时间ping网络加时间戳并记录到文本   由于一些原因,比如需要检查网络之间是否存在掉包等问题,会长时间去ping一个地址,由于会输出大量的信息而且最好要有时间戳,因此我们可以使用简单的 ...

  3. input文本框设置和移除默认值

    input文本框设置和移除默认值 这里想实现的效果是:设置和移除文本框默认值,如下图鼠标放到文本框中的时候,灰字消失. 1.可以用简单的方式,就是给input文本框加上onfocus属性,如下代码: ...

  4. CentOS下长时间ping网络加时间戳并记录到文本

    Linux下长时间ping网络加时间戳并记录到文本   由于一些原因,比如需要检查网络之间是否存在掉包等问题,会长时间去ping一个地址,由于会输出大量的信息而且最好要有时间戳,因此我们可以使用简单的 ...

  5. CSS文本简单设置

    文本的设置直接影响到用户对界面的感受,好的文本设置能够让用户对界面有一种赏心悦目的感受,在这地方我们来简单的说说说对文本设置的时候,有哪些格式. 文本设置的时候我们应该注意什么: 平时我们文本设置的时 ...

  6. MySQL问题记录——导入导出权限设置

    MySQL问题记录——导入导出权限设置 摘要:本文主要记录了在使用MySQL的过程中导入导出权限设置时遇到的问题以及解决方案. 相关日志 [Note] --secure-file-priv is se ...

  7. Qt开发的应用记录读取用户习惯设置的方法

    Qt开发的应用记录读取用户习惯设置的方法 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/w ...

  8. python基础练习题(题目 文本颜色设置)

    day23 --------------------------------------------------------------- 实例035:设置输出颜色 题目 文本颜色设置. 分析:不会, ...

  9. 记录Js 文本框验证 与 IE兼容性

    最近的日常就是将测试小姐姐提交的bug进行修改,想来这种事情还是比较好开展的,毕竟此项目已上线一年多,现在只是一些前端的问题需要改正.实际上手的时候并不是这样,原项目是在谷歌上运行,后来由于要新增一个 ...

随机推荐

  1. 开启SQL Server 2012的远程连接

    有个远程的SQL Server服务器需要连接,因为SQL server默认是把远程连接关闭的. 以下有文档,照着做了,但是还是连不上, http://www.2cto.com/database/201 ...

  2. Context Switch Definition

    A context switch (also sometimes referred to as a process switch or a task switch) is the switching ...

  3. 自己动手实现简单的Vector

    看到今天,终于自己动手写了一个自己的vector,我这个版本的vector只有vector主要的一些操作,包括原版vector的所有构造函数,begin(),end(),size(),capacity ...

  4. 【模拟】Codeforces 711B Chris and Magic Square

    题目链接: http://codeforces.com/problemset/problem/711/B 题目大意: N*N的矩阵,有且只有一个0,求要把这个矩阵变成幻方要填什么正数.无解输出-1.幻 ...

  5. 【模拟】Codeforces 705B Spider Man

    题目链接: http://codeforces.com/problemset/problem/705/B 题目大意: 两个人玩游戏,总共N个数,分别求前I(I=1 2 3...n)个数时游戏的获胜者是 ...

  6. 高效算法——D 贪心,区间覆盖问题

    Given several segments of line (int the X axis) with coordinates [Li , Ri ]. You are to choose the m ...

  7. cf601A The Two Routes

    A. The Two Routes time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  8. poj3122

    题目大意:馅饼(看起来像是一个简单点的题目啊,嘎嘎,希望是的吧) 我的生日即将来临按照习惯我将准备馅饼,不是一个馅饼,我有N块馅饼,有各种各样的味道和尺寸,当我的朋友来参加我的聚会平且他们都能得到一块 ...

  9. CentOS 搭建 FastDFS-5.0.5集群

    转http://www.open-open.com/lib/view/open1435468300700.html 第一步,确定目标: Tracker  192.168.224.20:22122  C ...

  10. C primer plus 读书笔记第十章

    这一章的标题是数组和指针.指针是C语言的精髓所在,而数组的概念和指针又息息相关,所以放在一起讲. 1.数组 主要内容有:1.1.数组初始化.1.2.指定初始化.1.3.数组赋值.1.4.数组边界.1. ...