なぜこれが機能しないのか、または機能させるために何が必要なのか理解できません。
再現するには、単純なWPFアプリケーションを作成し、メインウィンドウのコンストラクターを次のように置き換えます。
public MainWindow()
{
InitializeComponent();
// simple visual definition
var grid = new Grid { Width = 300, Height = 300 };
var text = new TextBlock
{
Text = "Y DON'T I WORK???",
FontSize = 100,
FontWeight =
FontWeights.Bold
};
grid.Children.Add(text);
// update the layout so everything is awesome cool
grid.Measure(grid.DesiredSize);
grid.Arrange(new Rect(grid.DesiredSize));
grid.UpdateLayout();
// create a BitmapSource from the visual
var rtb = new RenderTargetBitmap(
(int)grid.Width,
(int)grid.Height,
96,
96,
PixelFormats.Pbgra32);
rtb.Render(grid);
// Slap it in the window
this.Content = new Image { Source = rtb, Width = 300, Height = 300 };
}
これにより、画像が空になります。RTBをPNGとしてディスクに保存すると、正しいサイズですが透明になります。
ただし、画面に表示されているビジュアルを使用してこれを行うと、正常に機能します。
画面外で作成したビジュアルをビットマップにレンダリングするにはどうすればよいですか?