2010-06-03 7 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를 사용하여 크기를 조정하면 이미지가 압착됩니다. 가장 좋은 해결책은 대신 상위 컨테이너를 사용하는 것이지만 레이아웃을 변경해야 할 수도 있습니다. 또한 효과 렌더링을 보완 할 요소의 크기에 추가 할 패딩 값을 계산할 수도 있습니다. Effect 자체의 속성을 검사하여 이러한 값을 유도 할 수 있으며 시행 착오가있을 수 있습니다.

0

효과는 패딩 속성 집합을 가지고 있으며 효과에 사용되는 렌더링 영역의 크기를 설정하는 데 사용됩니다. 수정 된 경우 참조하고 렌더링 된 비주얼의 크기를 조정하십시오. RenderTargetBitmap - Visual vector to bitmapWPF Workings

의 기사를 살펴보십시오.
관련 문제