1

動的にいくつかの画像を生成したいと思います。そのために、XAMLビューを作成し、(DataBindingを使用して)データを入力してから、そのビューのレンダリングから画像を生成する予定です(スクリーンショットの一種)。

SilverligthまたはWPFでこれを行う方法はありますか?

4

3 に答える 3

6

WPFの場合:

public static Image GetImage(Visual target)
{
    if (target == null)
    {
        return null; // No visual - no image.
    }
    var bounds = VisualTreeHelper.GetDescendantBounds(target);

    var bitmapHeight = 0;
    var bitmapWidth = 0;

    if (bounds != Rect.Empty)
    {
        bitmapHeight = (int)(Math.Floor(bounds.Height) + 1);
        bitmapWidth = (int)(Math.Floor(bounds.Width) + 1);
    }

    const double dpi = 96.0;

    var renderBitmap =
        new RenderTargetBitmap(bitmapWidth, bitmapHeight, dpi, dpi, PixelFormats.Pbgra32);

    var visual = new DrawingVisual();
    using (var context = visual.RenderOpen())
    {
        var brush = new VisualBrush(target);
        context.DrawRectangle(brush, null, new Rect(new Point(), bounds.Size));
    }

    renderBitmap.Render(visual);

    return new Image
    {
        Source = renderBitmap,
        Width = bitmapWidth,
        Height = bitmapHeight
    };
}
于 2011-03-31T19:39:19.703 に答える
1

SilverlightでWriteableBitmapとそのRender関数を使用します。

WPFでは、 RenderTargetBitmapとそのRender関数を使用してこのトリックを使用します

于 2011-03-31T19:34:28.867 に答える
0

キャプチャするコントロール(データバインド後のデータ)をViewBoxに追加できます-http ://www.wpftutorial.net/ViewBox.html

そこから、WriteableBitmapを使用してイメージを作成できます-http ://msdn.microsoft.com/en-us/library/system.windows.media.imaging.writeablebitmap%28VS.95%29.aspx

于 2011-03-31T19:36:49.113 に答える