2008-10-09 7 views
2

Мы можем использовать объект BitmapSource как содержимое элемента управления Image, однако, если у меня есть только растровый объект, можно ли использовать его непосредственно, если преобразовать растровое изображение в Bitmapsouce, используя следующий метод:Есть ли BitmapSource единственный тип, который можно использовать в источнике изображения?

 Bitmap bitmap = imageObjToBeConvert; 
     IntPtr HBitmap = bitmap.GetHbitmap(); 
     result = Imaging.CreateBitmapSourceFromHBitmap 
      (HBitmap, 
      IntPtr.Zero, 
      Int32Rect.Empty, 
      BitmapSizeOptions.FromEmptyOptions()); 
     DeleteObject(HBitmap); 
     bitmap.Dispose(); 

Это займет некоторое время. Есть ли способ напрямую использовать Bitmap?

И я обнаружил, что BitmapSource, похоже, не может быть выпущен напрямую. Есть ли способ выбора для немедленного освобождения памяти после того, как битмапсуса не будет использоваться снова.

ответ

1

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

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

+0

Каковы эти способы? – 2009-03-24 22:17:28

1
  • 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.I maging .. ::. RenderTargetBitmap
  • System.Windows.Media.Imaging .. ::. TransformedBitmap
  • System.Windows.Media.Imaging .. ::. WriteableBitmap

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

+0

Но я думаю, что они сталкиваются с той же проблемой, что и BitmapSource – user25749 2008-10-09 03:11:03

 Смежные вопросы

  • Нет связанных вопросов^_^