2011-11-16 3 views
0

Canvas (myPrintingCanvas) 중에서 Image을 만들려고합니다. 그러나 이미지의 너비가 캔버스보다 두 배 이상 넓어졌으며 추가 공간이 다시 생깁니다. Canavas (LayoutRoot)을 시도하면 의도 한대로 작동합니다.WriteableBitmap 오른쪽에 검정색 패딩 추가

내 관찰에 따르면 myPrintingCanvas에서 ActualWidth는 항상 0입니다. LayoutRoot은 올바른 ActualWidth입니다. 여분의 패딩과 관련이 있는지 확실하지 않으므로 ActualWidthmyPrintingCanvas (UpdateLayoutMeasure을 사용)으로 만들지 못했습니다.

코드 :

//Code to render the content of myPrintingCanvas 
... 

//Make the WriteableBitmap 
WriteableBitmap myWriteableBitmap = new WriteableBitmap(myPrintingCanvas, null); 

답변

0

은 비트 맵을 렌더링하기 위해 Render 메소드를 호출 한 후 고정 된 크기로 WriteableBitmap 만들기 및 시도? Canvas에는 Silverlight 및 WPF의 is an anti-pattern이 있으며 레이아웃에 대한 많은 규칙이 적용되어 이상한 동작이 있습니다. 고정 된 크기 WriteableBitmap을 작성하고 다음과 같이 보일 것입니다 그것을 렌더링 코드 :

이 기술의
 int width = 640; 
     int height = 480; 
     WriteableBitmap bmp = new WriteableBitmap(width, height); 
     bmp.Render(myPrintingCanvas, null); 
     bmp.Invalidate(); 

하나의 장점은 여러 이미지를 잡아해야하는 경우 당신이 모든을 다시 대신 같은 WriteableBitmap를 다시 사용할 수 있다는 것입니다 시각.

관련 문제