Является ли BitmapSource единственным типом, который можно использовать в Image Source? - PullRequest
2 голосов
/ 09 октября 2008

Мы можем использовать объект 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 больше не используется.

Ответы [ 2 ]

1 голос
/ 09 октября 2008

Нет, вы не можете использовать Bitmap напрямую. Это связано с тем, что System.Drawing.Bitmap является растровым изображением GDI +, а такие классы, как BitmapImage в System.Windows.Media.Imaging, являются D3D / DirectX.

Что касается использования памяти, вы не можете освободить ее напрямую, но обычно есть какое-то кэширование, которое идет в фоновом режиме. Есть способы, которыми вы можете загрузить BitmapImage, чтобы он игнорировал кеш.

1 голос
/ 09 октября 2008
  • System.Windows.Media.Imaging .. ::. BitmapFrame
  • System.Windows.Media.Imaging .. ::. BitmapImage
  • System.Windows.Media.Imaging .. ::. CachedBitmap
  • System.Windows.Media.Imaging .. ::. ColorConvertedBitmap
  • System.Windows.Media.Imaging .. ::. CroppedBitmap
  • System.Windows.Media.Imaging .. ::. FormatConvertedBitmap
  • System.Windows.Media.Imaging .. ::. RenderTargetBitmap
  • System.Windows.Media.Imaging .. ::. TransformedBitmap
  • System.Windows.Media.Imaging .. ::. WriteableBitmap

Все эти классы наследуются от BitMapSource, поэтому любой из них может использоваться в этом контексте.

...