Utwórz element WPF poza ekranem i renderuj do mapy bitowej
Nie mogę zrozumieć, dlaczego to nie działa, lub co muszę zrobić, aby zadziałało.
Aby zreprodukować, utwórz prostą aplikację WPF i zastąp konstruktor głównego okna w ten sposób:
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 };
}
Powoduje to pusty obraz. Jeśli zapiszę RTB na dysku jako PNG, ma on prawidłowy rozmiar, ale jest przezroczysty.
Jeśli jednak robię to za pomocą obrazu wyświetlanego na ekranie, działa dobrze.
Jak mogę wyrenderować wizualną konstrukcję ekranową bitmapy?