[ATL/WTL]_[Gdiplus]_[关于使用Graphics::DrawString替换DrawText的说明]

场景

  1. 在开发WTLMFC程序时, 绘制文本往往会使用标准的CDC::DrawText函数, 其实也就是调用了GDIDrawText函数, 但是这个函数绘制出来的文字显示出来的效果会比记事本显示的效果差?什么原因呢.

  2. GDI在绘制文本, 线条时总是感觉比较粗糙, 边缘总是有锯齿, 不够平滑.

说明

  1. 因为GDI绘制图形时并没有消除锯齿的效果, 绘制出来的文本线条边缘是不平滑的, 这种情况如果在分辨率不高时没问题, 但是如果屏幕分辨率高了, 就很明显看出来一个字符各个部分粗细不一. 自从Gdiplus出来之后, 为了界面显示更美观, 直接切换使用Gdiplus, 使用Graphics来绘制是最好的, 不止线条还有图形.

  2. Graphics设置文本质量等级的方法SetTextRenderingHint, 用来设置是否具备AntiAlias(抗锯齿). 注意Hinting 意思是微调, 指示Gdiplus会根据绘制区域和绘制文本的大小, 位置进行微调, 比如字体的宽度, 字符间距等.
    使用这种效果可能会导致字体变形. TextRenderingHintClearTypeGridFit对于大部分LCD显示器提供最好的显示质量, 但是它只适用在小字号的字体上. 如果使用大字号并不合适. TextRenderingHintAntiAlias 对于旋转字体提供最好的质量, 无关大小号字体. 当然这个属性也会耗费最多的性能. TextRenderingHin

你可能感兴趣的:(ATL/WTL界面开发,GDI+编程日积月累)