gdi 画文字的一些属性
主要是设置 StringFormat的一些值,
Trimming 主要是在不足以显示所有文字时,以怎么样的方式来显示文字, 如下(参考1)
StringTrimming 成员
--------------------------------------------------------------------------------
成员名称 说明
Character 指定将文本修整成最接近的字符。
EllipsisCharacter 指定将文本修整成最接近的字符,并在被修整的行的末尾插入一个省略号。
EllipsisPath 中心从被修整的行移除并用省略号替换。这种算法尽可能多地保留了行中的最后一个由斜杠分隔的段。
EllipsisWord 指定将文本修整成最接近的单词,并在被修整的行的末尾插入一个省略号。
None 指定不进行任何修整。
Word 指定将文本修整成最接近的单词。
========================
FormatFlags 则用来确定如何显示文字, 具体内容如下(下面这些属性可以叠加, 通过位运算就可以了, 参考2);
StringFormatFlags 成员
--------------------------------------------------------------------------------
成员名称 说明
DirectionRightToLeft 按从右向左的顺序显示文本。
DirectionVertical 文本垂直对齐。
DisplayFormatControl 控制字符(如从左到右标记)随具有代表性的标志符号一起显示在输出中。
FitBlackBox 允许部分字符延伸该字符串的布局矩形。默认情况下,将重新定位字符以避免任何延伸。
LineLimit 在格式化的矩形中只布置整行。默认情况下,这种布置要继续到文本的结尾为止,或者到由于剪辑而不再有可见的行为止,看哪一种情况先发生。注意,此默认设置允许不是行高整数倍的格式化矩形将最后一行部分地遮住。若要确保看到的都是整行,请指定此值,并仔细地提供格式化矩形,使其高度至少为一个行高。
MeasureTrailingSpaces 包括每一行结尾处的尾随空格。在默认情况下,MeasureString 方法返回的边框都将排除每一行结尾处的空格。设置此标记以便在测定时将空格包括进去。
NoClip 允许显示标志符号的伸出部分和延伸到边框外的未换行文本。在默认情况下,延伸到边框外侧的所有文本和标志符号部分都被剪裁。
NoFontFallback 对于请求的字体中不支持的字符,禁用回退到可选字体。缺失的任何字符都用缺失标志符号的字体显示,通常是一个空的方块。
NoWrap 在矩形内设置格式时,禁用文本换行功能。当传递的是点而不是矩形时,或者指定的矩形行长为零时,已隐含此标记。
注意 StringFormatFlags 的一些使用
比如 sf.FormatFlags |= (StringFormatFlags.LineLimit); 是加上 LineLimit属性
而 sf.FormatFlags &= ~(StringFormatFlags.LineLimit); 则是去掉 LineLimit属性,
sf.FormatFlags &= (StringFormatFlags.LineLimit); 只显示 LineLimit属性
显示的效果 将会不一样
Rectangle textRect = Font font = StringFormat sf = StringFormat.GenericTypographic; sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Near; sf.Trimming = StringTrimming.EllipsisCharacter; sf.FormatFlags &= ~(StringFormatFlags.LineLimit); using (Brush brush = new SolidBrush(Color.Blue)) { g.DrawString(item.Text, font, brush, textRect, sf); }
参考1 http://msdn.microsoft.com/zh-cn/library/system.drawing.stringtrimming(VS.80).aspx
参考2 http://msdn.microsoft.com/zh-cn/library/system.drawing.stringformatflags(VS.80).aspx