2010-06-03 81 views
0

我能夠呈現Visual爲位圖罰款與此代碼:如何呈現從有位圖效果WPF元素的位圖?

 Rect bounds = VisualTreeHelper.GetDescendantBounds(target); 
     RenderTargetBitmap renderBitmap = new RenderTargetBitmap(width, height, 96, 96, PixelFormats.Pbgra32); 

     DrawingVisual visual = new DrawingVisual(); 
     using (DrawingContext context = visual.RenderOpen()) 
     { 
      VisualBrush brush = new VisualBrush(target);bounds.Value.Size)); 
      context.DrawRectangle(brush, null, new Rect(new Point(), bounds.Value.Size)); 
     } 
     renderBitmap.Render(visual); 
     return renderBitmap; 

的問題是,如果視覺有一個像上陰影位圖效果,然後將得到的圖像被壓扁。它似乎試圖將帶有陰影的視覺與視覺大小的圖像相結合,而沒有陰影。

回答

1

在大多數情況下(如陰影)的影響實際呈現下降元素本身的範圍之外。依靠ActualHeight和ActualWidth來調整圖像的大小,然後導致你看到的擠壓效果。最好的解決方案是使用父容器,但可能需要更改佈局。您也可以計算額外的填充值以添加到元素的大小,以補償效果渲染。通過檢查效果本身的屬性來推導這些值也許是可能的,並且也可能涉及一些試驗和錯誤。