搞清楚TextFormatFlags

时间:2013-08-09 11:24:19

标签: .net vb.net gdi+

我正在尝试使用TextRenderer(.NET v4.0)在自定义控件上显示一段文本。如果文本对于我允许的最大空间来说太大了,我希望文本被截断并且省略号放在最后 - 但是我无法找出TextFormatFlags的正确组合来做到这一点。 到目前为止,测试代码的摘录;

Using vPlotFont As New Font("Verdana", 7, FontStyle.Regular, GraphicsUnit.Point)
  Dim vWidth = Me.Width - vTextLeft - Me.Margin.Right
  Dim vFlags = TextFormatFlags.Left Or TextFormatFlags.EndEllipsis Or TextFormatFlags.WordBreak
  Dim vRequiredHeight = TextRenderer.MeasureText(mvSummaryData, vPlotFont, New Size(vWidth, 1), vFlags).Height
  Dim vRectangle As New Rectangle(vTextLeft, 25, vWidth, Math.Min(vRequiredHeight, 40))  ' Restrict to 40 pixels maximum
  TextRenderer.DrawText(e.Graphics, mvSummaryData, vPlotFont, vRectangle, Color.Red, vFlags)
  e.Graphics.DrawRectangle(Pens.Blue, vRectangle)  ' For debugging/testing only
End Using

因为高度被限制在40,所以任何不适合的东西都会被截断 - 我怎么告诉它在溢出时应用修剪/省略号?!

0 个答案:

没有答案