我正在处理类似这样的代码(从这里)
using (var bmp = new System.Drawing.Bitmap(1000, 1000))
{
IntPtr hBitmap = bmp.GetHbitmap();
var source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
hBitmap, IntPtr.Zero, Int32Rect.Empty,
System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
}
并且 MSDN 说,每当我打电话时,Bitmap.GetHbitmap()我都必须调用DeleteObject()以hBitmap释放非托管资源。
我见过的所有答案和 MSDN 都说我必须 P/Invoke 该DeleteObject()功能。这看起来有点疯狂,因为我获得了hBitmap没有 P/Invoke,现在我突然需要使用 P/Invoke 来正确摆脱它。
除了 P/Invoke 确实没有其他方法可以DeleteObject()调用我的hBitmap吗?