【问题标题】:How to scale font to fit in a specified rectangle如何缩放字体以适合指定的矩形
【发布时间】:2013-10-28 04:29:38
【问题描述】:

我想在指定的矩形中绘制一个字符串,但问题是指定字体的字符串可能在矩形的范围之外。

所以我想要一种方法来缩放字符串字体以适应指定矩形区域中的字符串。

public Font scaleFont(String text, RectangleF rect, Graphics graphics, Font pFont)
        {
            float fontSize = 20.0f;
            Font font = pFont;
            float width = graphics.MeasureString(text, pFont).Width;
            float height = graphics.MeasureString(text, pFont).Height;
            fontSize = ((rect.Width / width)  * pFont.Size);
            float heig = (rect.Height / height);
            return new Font(pFont.FontFamily, fontSize);
        }

上面的代码给了我缩放字体以适应矩形顶部区域的字符串,但我想适应整个区域(附加上面算法的输出)

但我想要以下输出。

【问题讨论】:

  • 换句话说,您希望单词被盒子包裹。我没听错吗?
  • @AndreyAtapin,我已经更新了问题。
  • 为什么你在使用Font font = pFont 却从不使用它?

标签: c# math graphics gdi+


【解决方案1】:

你的意思是整个区域都适合吗?

如果是这样,通常的方法是在位图上绘制文本并将其拟合到您想要的任何对象。

为避免像素化,您可以使用您的代码来检测最佳字体大小和最佳位图大小。

【讨论】:

  • 我认为您在这里是正确的。我正在做一个项目,我必须做这种事情,这也是我想出的最好的主意。我用这篇文章作为指导方针,它对我很有效。感谢 Michael Kuehl - 这是链接 csharp-font-scaling
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-20
  • 1970-01-01
相关资源
最近更新 更多