2015-10-05 80 views
0

在WPF中有一個Grid組件,其中有幾個Image組件。某些圖像組件具有動畫。如何從WPF組件獲取快照?

我們希望將此生成的動畫保存爲一些連續的BMP幀。你能給我們一個線索嗎?與WindowsForms中一樣,圖形對象是否存在於WPF中?如果是,如何訪問它們?

回答

1

您可以將任何WPF控件保存到使用RenderTargetBitmap像下面的代碼片段文件:

RenderTargetBitmap b = new RenderTargetBitmap(1000, 1000, 300, 300, PixelFormats.Pbgra32); 

b.Render(controlToRender); 

PngBitmapEncoder encoder = new PngBitmapEncoder(); 

encoder.Frames.Add(BitmapFrame.Create(b)); 

using (Stream s = File.Create(@"c:\test.png")) 
    encoder.Save(s); 
+0

是否有以bmp格式保存圖像? – Hamed

+1

還有一個BmpBitmapEncoder保存爲BMP格式。 –

0

在Windows窗體中有一個WPF中的圖形類。 將控制渲染成圖像的問題曾多次受到質疑。 關於如何做到這一點,在我看來最好的答案,這是一個WPF - Get size of UIElement in Memory?

你也應該注意到,你必須等待,直到圖像加載,如這裏所描述RenderTargetBitmap does not render included images

而且你可以看這個問題,如果你想呈現整個網格 Save image of whole ListView

通過結合這些問題,你應該能夠使數據網格快照。我相信你可以嘗試使用DispatcherTimer來捕捉多個圖像,這樣動畫將以幀的形式顯示出來。

+0

不像前兩個環節,第三個看起來相關。謝謝。 – Hamed

+0

那麼,第二個和第三個問題的答案是由我寫的,基於第一個問題的答案 – netaholic