如何在C#中生成包含文本和图像的图像

本文关键字:图像 包含 文本 | 更新日期: 2023-09-27 18:00:18

我有几段文字,在这些段落之间有几张图片。

现在,我想使用这些材料生成一张图片,垂直合并它们。但是文本和图片的所有块的宽度都不能大于生成图片的宽度,这意味着我必须缩小原始图片,并将每段文本填充到一个矩形中以适应宽度。

困难在于:为了计算出包含文本的矩形的大小,我需要使用Graphics.MeasureString()方法,该方法需要一个用于生成图片的Graphics实例(现在,我使用的是一个空白模板图片)。但我不知道这个图形的确切大小,直到我弄清楚所有矩形和图片的大小。

有没有任何方法可以在没有源图像的情况下获得Graphics的实例?

或者有其他方法来做这项工作吗?

如何在C#中生成包含文本和图像的图像

希望这能帮助到伙计。

http://chiragrdarji.wordpress.com/2008/05/09/generate-image-from-text-using-c-or-convert-text-in-to-image-using-c/

https://web.archive.org/web/20131231000000/http://tech.pro/tutorial/654/csharp-如何在图像上绘制文本的片段教程

http://www.codeproject.com/Questions/388845/HOW-TO-MAKE-HIGH-QAULITY-IMAGE-WITH-TEXT-IN-Csharp

感谢

对于人们如何对WPF解决方案感兴趣(如有要求):

    public static BitmapSource CreateImage(string text, double width, double heigth)
    {
        // create WPF control
        var size = new Size(width, heigth);
        var stackPanel = new StackPanel();
        var header = new TextBlock();
        header.Text = "Header";
        header.FontWeight = FontWeights.Bold;
        var content = new TextBlock();
        content.TextWrapping = TextWrapping.Wrap;
        content.Text = text;
        stackPanel.Children.Add(header);
        stackPanel.Children.Add(content);
        // process layouting
        stackPanel.Measure(size);
        stackPanel.Arrange(new Rect(size));
        // Render control to an image
        RenderTargetBitmap rtb = new RenderTargetBitmap((int)stackPanel.ActualWidth, (int)stackPanel.ActualHeight, 96, 96, PixelFormats.Pbgra32);
        rtb.Render(stackPanel);
        return rtb;
    }