标签:
需要说明的是,在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); |
标签:
原文地址:http://www.cnblogs.com/wuhufeng/p/4267854.html