题
我们可以使用。对象为内容的图像的控制,但是如果我只有Bitmap目的,我可以直接使用它,如果我换位图以Bitmapsouce使用以下方法:
Bitmap bitmap = imageObjToBeConvert;
IntPtr HBitmap = bitmap.GetHbitmap();
result = Imaging.CreateBitmapSourceFromHBitmap
(HBitmap,
IntPtr.Zero,
Int32Rect.Empty,
BitmapSizeOptions.FromEmptyOptions());
DeleteObject(HBitmap);
bitmap.Dispose();
它需要一些时间。是否有任何方式使用位直接?
我发现。似乎不可能直接释放,是否有一个样品的释放方法的存储器的立即后Bitmapsouce不是再次使用。
解决方案
不,您不能直接使用 Bitmap
。这是因为 System.Drawing.Bitmap
是一个GDI +位图,而 System.Windows.Media.Imaging
中的 BitmapImage
之类的类是D3D / DirectX
关于内存使用情况,您不能直接释放它,但通常会在后台进行某种缓存。有一些方法可以加载 BitmapImage
,以便忽略缓存。
其他提示
- 系统。窗户。媒体。像..::.BitmapFrame
- 系统。窗户。媒体。像..::.BitmapImage
- 系统。窗户。媒体。像..::.CachedBitmap
- 系统。窗户。媒体。像..::.ColorConvertedBitmap
- 系统。窗户。媒体。像..::.CroppedBitmap
- 系统。窗户。媒体。像..::.FormatConvertedBitmap
- 系统。窗户。媒体。像..::.RenderTargetBitmap
- 系统。窗户。媒体。像..::.TransformedBitmap
- 系统。窗户。媒体。像..::.WriteableBitmap
所有这些类继承。,因此他们的任何可用于这种情况。
不隶属于 StackOverflow