2016-09-02 5 views
0

私のWPFユーザーコントロールから画像を保存します。それは動作しますが、私は右と下に黒いバーがあります。私はdpiX(96)とdpiY(96)を変更しても機能しますが、ウィンドウを最大化すると、再び間違っています(ユーザコントロールの一部が欠落しています)。WPF RenderTargetBitmap右側と下の黒いバー

これは私がビットマップとして画像を保存する方法である:それはタイトルバーと枠線が含まれているため、ウィンドウの

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) 

答えて

0

幅と高さがユーザーコントロールよりも少し大きくなっています。あなたがあなたのコントロールの寸法を使用する場合は代わりにそれが正常に動作します:

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

私はあなたがコントロールをレンダリングする前に、現在または所望の大きさのMeasureArrangeを呼び出すことによって、適切にレイアウトされていることを確認してくださいにもお勧めします。

コントロールのLayoutTransformまたはRenderTransformのプロパティを使用している場合は、追加のサイズの計算が必要になることがあります。

Btw:WPFはサイズ計算に常に96 DPIを使用しますので、変更しないでください。

関連する問題