2011-11-16 9 views
0

CanvasmyPrintingCanvas)のうちImageを作成しようとしています。しかし、画像の幅はキャンバスより少なくとも2倍広くなり、作成された余分なスペースが戻ってきます。もう一度試してみると、CanavasLayoutRoot)は意図したとおりに動作します。WriteableBitmap右に黒いパッドを追加する

私の見解では、myPrintingCanvasでは、ActualWidthは常に0です。LayoutRootは、正しいActualWidthです。余分なパディングと何か関係があるかどうかは分かりませんが、myPrintingCanvasUpdateLayoutMeasureを使用)のActualWidthを取得できませんでした。

コード:

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

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

答えて

0

はあなたが固定サイズでWriteableBitmapを作成して、ビットマップを描画するためにそのRenderメソッドを呼び出してみましたがありますか? Canvasには、SilverlightとWPFのis an anti-patternがあり、レイアウトに関する多くの規則が破られているため、奇妙な振る舞いをしています。この技術の

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

一つの利点は、あなたが複数のイメージをつかむために必要がある場合は、同じWriteableBitmapの代わりに、すべてのそれを再作成を再利用できることです。WriteableBitmap固定サイズを作成し、それをレンダリングするためのコードは次のようになります時間。

関連する問題