我们可以使用Bitmapsource对象作为Image控件的内容,但是如果我只有Bitmap对象,我是否可以直接使用它,如果我使用以下方法将Bitmap转换为Bitmapsouce:
Bitmap bitmap = imageObjToBeConvert;
IntPtr HBitmap = bitmap.GetHbitmap();
result = Imaging.CreateBitmapSourceFromHBitmap
(HBitmap,
IntPtr.Zero,
Int32Rect.Empty,
BitmapSizeOptions.FromEmptyOptions());
DeleteObject(HBitmap);
bitmap.Dispose();
需要一些时间。有没有办法直接使用Bitmap?
我发现BitmapSource似乎无法直接发布,是否有一个示例方法可以在不再使用Bitmapsouce之后立即释放内存。
答案 0 :(得分:1)
所有这些类都继承自BitMapSource,因此可以在该上下文中使用它们。
答案 1 :(得分:1)
不,您不能直接使用Bitmap
。这是因为System.Drawing.Bitmap
是GDI +位图,而BitmapImage
中的System.Windows.Media.Imaging
类是D3D / DirectX。
关于内存使用情况,您不能直接释放它,但通常会在后台进行某种缓存。有一些方法可以加载BitmapImage
,以便忽略缓存。