2009-11-21 59 views

回答

4

不要試圖竊取答案,請使用Johannes引用的CodeProject文章中給出的代碼創建GDI位圖。然後,您可以使用下面的代碼把它轉換成一個的BitmapSource用於WPF:

public static BitmapSource ToBitmapSource(this System.Drawing.Bitmap source) 
    { 
     var hBitmap = source.GetHbitmap(); 

     try 
     { 
      return System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
       hBitmap, 
       IntPtr.Zero, 
       Int32Rect.Empty, 
       BitmapSizeOptions.FromEmptyOptions()); 
     } 
     catch (Win32Exception) 
     { 
      return null; 
     } 
     finally 
     { 
      NativeMethods.DeleteObject(hBitmap); 
     } 
    } 

其中用於NativeMethods.DeleteObject()的代碼是:

[DllImport("gdi32.dll")] 
    [return: MarshalAs(UnmanagedType.Bool)] 
    internal static extern bool DeleteObject(IntPtr hObject); 
+0

你走了,你偷了答案,而不是約翰尼斯要去生你的氣......看看你做了什麼? :))只是開玩笑,感謝代碼;) – luvieere 2009-11-22 15:35:31

+0

哈哈,沒有probs:D – 2009-11-24 09:17:49

4

這裏有一個CodeProject article

而且由於屏幕捕獲不是WPF特定的,因此該解決方案也不涉及WPF。

+0

一個是知道的,我m對WPF解決方案感興趣,這會導致BitmapImage或其他東西。 – luvieere 2009-11-21 23:54:24

+0

http://blogs.msdn.com/rwlodarc/archive/2007/01/03/wpf-bitmapsource-and-gdi-bitmap-interop.aspx – Joey 2009-11-22 00:26:02