1
我在我的窗口中有一個畫布,偶爾我想拍攝內容的快照。畫布的位圖不正確地基於窗口的左上角
我有以下方法可以這樣做:
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);
}
問題:
當我拍照照片的由來/位圖不畫布的原點,但窗口的來源。所以Canvas出現在位圖底部/右側的相同位置,與窗口左上角相關。我不知道爲什麼會發生這種情況。
作爲示例,請參閱下面的圖片:左上角有白色空格,實際內容翻譯爲右下角。原點應該是實際圖像所在的位置。我會盡量繞過一個邊框,以便更容易地看到問題(抱歉,如果有人知道請告訴我或自己編輯它,我不知道如何在圖像周圍放置邊框)。
你試過[這](http://www.west-wind.com/weblog/posts/2007/Sep/10/Rendering-a-WPF-Container -to-位圖)? – dowhilefor
@dowhilefor謝謝,我正在看一看。 – Roland
@dowhile是的,解決了這個問題,再次感謝! – Roland