我用下面的代碼保存畫布的圖片只有頂部被保存
if (!Directory.Exists(DefaultSettings.MainPath + "//Skeleton Images//"))
Directory.CreateDirectory(DefaultSettings.MainPath + "//Skeleton Images//");
System.Windows.Size size = new System.Windows.Size(canvas.Width, canvas.Height);
canvas.Measure(size);
canvas.Arrange(new System.Windows.Rect(size));
RenderTargetBitmap renderBitmap = new RenderTargetBitmap((int)size.Width, (int)size.Height, 96d, 96d, PixelFormats.Pbgra32);
renderBitmap.Render(canvas);
using (FileStream outstream = new FileStream(DefaultSettings.MainPath + "//Skeleton Images//Kinected (" + images + ").jpg", FileMode.Create))
{
JpegBitmapEncoder cEncoder = new JpegBitmapEncoder();
cEncoder.Frames.Add(BitmapFrame.Create(renderBitmap));
cEncoder.Save(outstream);
}
然而,它只是保存圖像的頂部。儘管圖像大小爲321x240,並且畫布大小也相同。這是爲什麼發生?這個代碼在保存整個畫布之前使用了相同的代碼,爲什麼這會突然產生錯誤?下面的圖片來說明問題。還要注意,畫布放置在圖像的頂部,因爲它們被單獨渲染,並且畫布一直延伸到「彩色框架」文本。