一个项目中要进行字体锯齿消除,所以使用了gdi+,过程中花了好长时间才找到gdi+的一些属性设置接口,mark于此。
首先是可以使用的代码:
1 用GDI+写字到界面实现当字符串长度大于rect的长度时,自动节断字符串,并在后边以“...“补充
sf.SetTrimming( StringTrimmingEllipsisCharacter );调用即可,类似gdi接口中nType |= DT_MODIFYSTRING | DT_END_ELLIPSIS;的效果。
2 设置只显示单行属性
sf.SetFormatFlags( StringFormatFlagsNoWrap );,类似gdi中的nType |= DT_SINGLELINE;
3 消锯齿
graph.SetTextRenderingHint(TextRenderingHint(TextRenderingHintAntiAlias));
4 替代数字接口
StringDigitSubstitute;不知道这个接口有什么用,表现是可以将一个字符串中的数字用一些 不知道什么的东西 进行替换。
5 对齐方式:StringAlignment,左中右。
遗留问题:
gdi中用DC绘制时指定字体高假如为20, 使用gdi+绘制时同样有字体,如果设置成20则画出来的字大小不同,gdi中的dc默认使用的是MM_TEXT,按道理gdi+的字体设置只要设置成UnitPixel即可。都表示一个逻辑单位代表一个像素点。不过还是不正确,不知道为啥。