我们可以使用。对象为内容的图像的控制,但是如果我只有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

所有这些类继承。,因此他们的任何可用于这种情况。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top