【发布时间】:2011-09-17 09:27:59
【问题描述】:
我的窗口中有一个画布,偶尔我想拍摄内容的快照。
我有以下方法:
private PngBitmapEncoder captureVisual(Visual v)
{
RenderTargetBitmap bmp = new RenderTargetBitmap(546, 410, 120, 96, PixelFormats.Pbgra32);
bmp.Render(v);
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Interlace = PngInterlaceOption.On;
encoder.Frames.Add(BitmapFrame.Create(bmp));
return encoder;
}
我使用以下方法调用此方法,该方法由按下按钮操作调用(想法是将图片添加到另一个将显示“照片”的画布:
private void take_photo(Object sender, RoutedEventArgs e)
{
System.Windows.Controls.Image photoImg = new System.Windows.Controls.Image();
BitmapEncoder enc = captureVisual(videoCanvas);
photoImg.Source = enc.Frames[0];
photoCanvas.Children.Add(photoImg);
}
问题:
当我拍摄照片时,照片/位图的原点不是画布的原点,而是窗口的原点。因此,画布出现在位图中,向底部/右侧平移,与窗口左上角的位置相同。我不知道为什么会这样。
作为示例,请参见下图:左上角有空白区域,实际内容被翻译到右下角。原点应该是实际图像所在的位置。我会尝试在边框周围放置一个边框,以便更容易地可视化问题(抱歉,我不知道如何在图像周围放置边框,如果有人知道请告诉我或自己编辑它。谢谢)。
【问题讨论】:
-
你试过this吗?
-
@dowhilefor 谢谢,我正在看看。
-
@dowhile 是的,解决了问题,再次感谢!