2016-09-02 2 views
0

Ich möchte ein Bild von meinem WPF Benutzersteuerelement speichern. Es funktioniert, aber ich habe schwarze Balken auf der rechten Seite und unten. Wenn ich die dpiX (96) und dpiY (96) ändere, funktioniert es, aber wenn ich das Fenster maximiere, ist es wieder falsch (dann fehlt ein bisschen Benutzerkontrolle). DieseWPF RenderTargetBitmap schwarze Balken auf der rechten Seite und unten

ist, wie ich das Bild als Bitmap speichern:

Dim parentWindow As Window = Window.GetWindow(_Map) 
Dim rtb As New RenderTargetBitmap(parentWindow.ActualWidth, parentWindow.ActualHeight, 96, 96, PixelFormats.Pbgra32) 
rtb.Render(_Map) 
Dim ms As New MemoryStream() 
Dim bp As New BmpBitmapEncoder() 
bp.Frames.Add(BitmapFrame.Create(rtb)) 
bp.Save(ms) 
Dim saveMap As New Bitmap(ms) 

Antwort

0

Die Breite und Höhe des Fensters ein bisschen größer als Ihr Usercontrol sind, weil sie die Titelleiste und Grenzen enthält. wenn Sie die Maße Ihrer Kontrolle verwenden, anstatt es funktioniert gut:

Dim rtb As New RenderTargetBitmap(_Map.ActualWidth, _Map.ActualHeight, 96, 96, PixelFormats.Pbgra32) 

Ich empfehle Ihnen auch die Steuerung stellen Sie sicher, layoutierten richtig durch vor dem Rendern Measure und Arrange mit dem aktuellen oder gewünschten Größe aufrufen.

Zusätzliche Größenberechnungen können erforderlich sein, wenn Sie die Eigenschaften LayoutTransform oder RenderTransform Ihres Steuerelements verwenden.

Btw: WPF verwendet immer 96 DPI für Größenberechnungen, also sollten Sie das nicht ändern.

Verwandte Themen