.NET 2.0里面新加了一个TextRenderer的类. TextRender使用GDI画/测量Text, 而不是GDI+.
而为什么使用TextRenerer可能会比Graphics.Draw/MeasureString好一些呢? 有以下3个原因:
而为什么使用TextRenerer可能会比Graphics.Draw/MeasureString好一些呢? 有以下3个原因:
- 对复杂的国际字符GDI比GDI+画的好一些. 类似的, 如果Windows新支持一种语言, GDI会比GDI+支持的好一些.
- Windows Form里面的Control大多都用GDI来绘制字符串. 所以如果有时候你需要绘制和control上的字符串完全一样的字符串, 或者测量control上字符串准确的大小的话, 你必须使用GDI, 而非GDI+. 比如, 如果你想准确判断TreeView上一个TreeNode的字符串是否在特定的位置内, 则需要用TextRenderer.MeasureText. (TreeNode.Bounds会稍微比字符串本身大一点点).
使用GDI+绘制/测量的结果会跟GDI有一定区别, 特别是字符串很长的情况下. - GDI+会在程序运行时一直锁定字体文件, 从而很难更新字体.
以上.