我正在尝试使用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,所以任何不适合的东西都会被截断 - 我怎么告诉它在溢出时应用修剪/省略号?!