.net - 在矩形内填充文本

标签 .net graphics gdi+ drawstring

我正在使用 GDI+ 在 Graphics 对象上绘制一个字符串。

我希望字符串适合预定义的矩形(不破坏任何线条)

除了在循环中使用 TextRenderer.MeasureString() 直到返回所需的大小之外,还有其他方法吗?

类似的东西:

DrawScaledString(Graphics g, string myString, Rectangle rect)

最佳答案

您可以使用 ScaleTransform

string testString = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Suspendisse et nisl adipiscing nisl adipiscing ultricies in ac lacus.
Vivamus malesuada eros at est egestas varius tincidunt libero porttitor.
Pellentesque sollicitudin egestas augue, ac commodo felis ultricies sit amet.";

Bitmap bmp = new Bitmap(300, 300);
using (var graphics = Graphics.FromImage(bmp))
{
    graphics.FillRectangle(Brushes.White, graphics.ClipBounds);
    var stringSize = graphics.MeasureString(testString, this.Font);
    var scale = bmp.Width / stringSize.Width;
    if (scale < 1)
    {
        graphics.ScaleTransform(scale, scale);
    }
    graphics.DrawString(testString, this.Font, Brushes.Black, new PointF());
}
bmp.Save("lorem.png", System.Drawing.Imaging.ImageFormat.Png);
但是您可能会得到一些别名效果。
alt text
编辑:
但是,如果您想更改字体大小,我想您可以使用 scale 更改字体大小。在上面的代码中,而不是使用比例变换。尝试两者并比较结果的质量。

关于.net - 在矩形内填充文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4152342/

相关文章:

c# - 使用 GDI+ 进行高级颜色混合

c# - 我如何有条件地为 Mono 和 Microsoft .NET 编译我的 C#?

java - 基于 CLR 的 JVM,反之亦然

.net - 如何允许使用 XslCompiledTransform (.NET) 通过 XSLT 的 document(uri) 函数加载 XML 文档中的 DTD

javascript - 如何在饼图中填充一定份额的切片?

c# - 在图片框上绘制 vs 直接在表单上绘制

.net - WCF 什么时候使用 app.config 或 web.config?

c++ - 如何将图形添加到 C++

Android进度圈波

c++ - 如何在透明背景上绘制PNG?