WriteableBitmap向右添加黑色填充

时间:2011-11-16 14:30:41

标签: silverlight canvas bitmap silverlight-3.0 actualwidth

我正试图从ImageCanvas)之一中制作myPrintingCanvas。但是图像的宽度至少比画布宽两倍,并且创建的额外空间又回来了。如果我尝试使用其他CanavasLayoutRoot),则按预期工作。

我的观察是,在myPrintingCanvas上,ActualWidth始终为0. LayoutRoot具有正确的ActualWidth。不确定它是否与额外的填充有关,但我未能获得ActualWidth myPrintingCanvas(使用UpdateLayoutMeasure)。

代码:

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

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

1 个答案:

答案 0 :(得分:0)

您是否尝试使用固定大小创建WriteableBitmap,然后调用其Render方法来呈现位图? 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,而不是每次都重新创建它。