我正在使用 Rectangle 来显示一些数据的自定义控件。现在,假设矩形的宽度和高度设置为 100。
如果我的数据量较少,那很好,我可以使用 DrawString 方法进行绘制。但是,有时数据更大,因此会被剪裁。
我曾尝试使用 MeasureString 方法,但它没有检索到正确的值。如果必须以 100px 宽度的矩形显示,有什么方法可以看到字符串的大小,[长度和高度]。我的意思是可以增加高度但不能增加宽度,以便我可以使用字符串的正确高度使其完整显示在该矩形中。
我正在使用 Rectangle 来显示一些数据的自定义控件。现在,假设矩形的宽度和高度设置为 100。
如果我的数据量较少,那很好,我可以使用 DrawString 方法进行绘制。但是,有时数据更大,因此会被剪裁。
我曾尝试使用 MeasureString 方法,但它没有检索到正确的值。如果必须以 100px 宽度的矩形显示,有什么方法可以看到字符串的大小,[长度和高度]。我的意思是可以增加高度但不能增加宽度,以便我可以使用字符串的正确高度使其完整显示在该矩形中。
听起来你有两个不同的问题需要克服
准确测量字符串。为此,请参阅TextRenderer.MeasureText,它将为您提供以像素为单位的预期大小。
另一种方法是绘制您的字符串,然后通过查找图像中不包含文本颜色的最左侧和最右侧的列来自行测量它。您可以为此使用GetPixel 。这种方法需要更多的代码,而且速度会更慢,所以我不推荐它。
最大化您绘制的字符串的大小,同时将其安装在 100 的宽度内。为此,您可以简单地在循环中测量字符串以找到超过 100 像素的字体大小。猜测并从那里开始工作。
将矩形的高度设置为0。然后我们做MeasureString之后,我们可以找到可以放置在指定宽度的矩形中的字符串的高度。将该高度赋予矩形以绘制,然后在其中绘制字符串。
http://www.tigraine.at/2009/01/03/gdi-drawing-string-with-word-wrap/