【发布时间】:2011-04-16 22:32:58
【问题描述】:
我有一个有趣的问题。我快到了,但很好奇其他人将如何解决它。我想在预定义的区域中显示一些多行文本。我不知道文本将是什么或区域有多大,因此必须通用编写该函数。您可以假设始终使用标准字体,但必须更改磅值。
假设您有一个函数,该函数将绘制在字符串参数中传递给它的文本。该函数有一个要在其中绘制的表单对象,并且还传递了一个矩形对象,该对象定义了表单上文本的边界区域。该函数需要在给定矩形中以适合的字体显示表单上的文本。对我来说,挑战在于计算字体的大小,以使文本尽可能地适合文本,在具有最小空白的矩形中。
这两个方程可能有用:
float pixels = (points *dpi)/72f;
float points = (pixels*72f)/dpi);
还有:
float dpi = CreateGraphics().DpiY;
【问题讨论】:
-
哇,看看到目前为止的建议,我没有意识到最后一点会如此迭代!如果我们假设文本没有被换行怎么办。硬返回会打断多条线,所以我们只需要担心最长的线的宽度。
标签: c# graphics fonts font-size dpi