Ich versuche ein BitmapFrame
zu generieren, das auf einem UIElement
basiert. Hier ist meine Funktion:Erzeuge BitmapSource von UIElement
private BitmapFrame RenderToBitmap2()
{
RenderTargetBitmap renderBitmap = new RenderTargetBitmap(200, 200, 96, 96, PixelFormats.Pbgra32);
DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();
VisualBrush aVisualBrush = new VisualBrush(GenerateTestStackPanel());
drawingContext.DrawRectangle(aVisualBrush, new Pen(Brushes.Green, 2), new Rect(new Size(150, 150)));
drawingContext.Close();
renderBitmap.Render(drawingVisual);
return BitmapFrame.Create(renderBitmap);
}
Zum Testen und Debuggen, ich bin eine zusätzliche Funktion, die eine einfache Stackframe erzeugt, dass sollte ein gültiges visuelles Element erstellen, die dargestellt werden können:
private StackPanel GenerateTestStackPanel()
{
// Create a red Ellipse.
Ellipse myEllipse = new Ellipse();
myEllipse.Fill = Brushes.Green;
myEllipse.StrokeThickness = 2;
myEllipse.Stroke = Brushes.Black;
// Set the width and height of the Ellipse.
myEllipse.Width = 200;
myEllipse.Height = 200;
// Add the Ellipse to the StackPanel.
StackPanel myStackPanel = new StackPanel();
myStackPanel.Children.Add(myEllipse);
return myStackPanel;
}
Aus irgendeinem Grund wird VisualBrush in der Funktion DrawRetangle (...) nicht gerendert. Ich kann die grüne Grenze sehen, aber sonst nichts. Darüber hinaus, wenn ich die VisualBrush mit einem Standard-Pinsel tauschen, es funktioniert super:
drawingContext.DrawRectangle(Brushes.Plum, new Pen(Brushes.Green, 2), new Rect(new Size(150, 150)));
Vielen Dank im Voraus!