我想將我的畫布保存到位圖。我在網上找到了一些例子,但所有這些只保存黑色圖像(與我的畫布大小)。 我能做些什麼?將畫布保存到位圖
代碼:
public static void SaveCanvasToFile(Canvas surface, string filename)
{
Size size = new Size(surface.Width, surface.Height);
surface.Measure(size);
surface.Arrange(new Rect(size));
// Create a render bitmap and push the surface to it
RenderTargetBitmap renderBitmap =
new RenderTargetBitmap(
(int)size.Width,
(int)size.Height,
96d,
96d,
PixelFormats.Pbgra32);
renderBitmap.Render(surface);
// Create a file stream for saving image
using (FileStream outStream = new FileStream(filename, FileMode.Create))
{
BmpBitmapEncoder encoder = new BmpBitmapEncoder();
// push the rendered bitmap to it
encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
// save the data to the stream
encoder.Save(outStream);
}}
您是否使用調試器完成了這一步?有沒有什麼可疑的,比如'surface.Width'返回0? – 2011-05-01 20:29:25
不,在調試器中,一切都看起來正常 – zc21 2011-05-01 20:42:58
使用你的代碼我只是成功地呈現了一大堆(〜25)的控件(儘管我使用了ActualWidth和ActualHeight屬性,因爲我很少明確地設置大小) – 2011-05-01 21:16:16