0

私はテキストのいくつかの段落とこれらの段落の間にいくつかの写真を持っています。

さて、これらの素材を使って、縦に合体させて絵を描きたいと思います。ただし、テキストと画像のすべてのブロックの幅を生成する画像の幅より大きくすることはできません。つまり、元の画像をズームアウトし、テキストの各段落を幅に合わせて長方形に塗りつぶす必要があります。

難しいことは次のとおりです。テキストを含む長方形のサイズを把握するには、Graphics.MeasureString()メソッドを使用する必要があります。このメソッドには、画像の生成に使用されるGraphicsのインスタンスが必要です(現在、空白のテンプレート画像を使用しています)。しかし、長方形と画像のすべてのサイズを理解するまで、このグラフィックの正確なサイズはわかりません。

ソース画像なしでグラフィックスのインスタンスを取得する方法はありますか?

または、この作業を行う他の方法はありますか?

4

2 に答える 2

0

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;
    }
于 2019-01-31T09:42:32.223 に答える