2016-09-12 3 views
1

Ich habe eine transparente Randless-Fenster in WPF und nur die PNG-Bild von seinem Hintergrund ist sichtbar, und ich versuche, das Formular genau so zu exportieren, wie es ist, transparent.Transparente WPF zu PNG Image - VB.NET

Hier ist, was ich habe:

Dim target = New Bitmap(Me.Width, Me.Height, PixelFormat.Format32bppArgb) 
    Dim graphics__1 = Graphics.FromImage(target) 
    graphics__1.CompositingMode = CompositingMode.SourceOver 
    graphics__1.DrawImage(target, 0, 0) 
    target.Save("filename.png", ImageFormat.Png) 

Es funktioniert, aber das Ausgangsbild ist leer.

Antwort

0

Sie setzen das Zielbild niemals irgendwo in diesem Code auf das Hintergrundbild, so dass beim Speichern keine Bilddaten vorhanden sind.

Bitte versuchen Sie den folgenden Code. Es funktionierte für mich:

Image image = new Image(); 
image.Source = (Background as ImageBrush).ImageSource; 
Size sz = new Size(image.Source.Width, image.Source.Height); 
image.Measure(sz); 
image.Arrange(new Rect(sz)); 

RenderTargetBitmap rtb = new RenderTargetBitmap((int)image.Source.Width, (int)image.Source.Height, 96d, 96d, PixelFormats.Default); 
rtb.Render(image); 

PngBitmapEncoder pngBitmapEncoder = new PngBitmapEncoder(); 
pngBitmapEncoder.Frames.Add(BitmapFrame.Create(rtb)); 
using (Stream stream = File.Create("test.png")) 
    pngBitmapEncoder.Save(stream); 
+0

Problem gelöst. Ich danke dir sehr! – Nana