WPF中的BitmapFrame和BitmapImage有什么区别?您将在哪里使用它们(即,为什么要使用BitmapFrame而不是BitmapImage?)

最佳答案

如果需要了解这些信息,则应该坚持使用抽象类BitmapSource,如果只想绘制它,则甚至应该坚持使用ImageSource

实现BitmapFrame只是实现的面向对象性质。您实际上不需要区分这些实现。 BitmapFrames可能包含一些额外的信息(元数据),但通常只有成像应用程序会关心。

您会注意到从BitmapSource继承的其他这些类:

  • BitmapFrame
  • BitmapImage
  • CachedBitmap
  • ColorConvertedBitmap
  • CroppedBitmap
  • FormatConvertedBitmap
  • RenderTargetBitmap
  • TransformedBitmap
  • WriteableBitmap

  • 您可以通过构造BitmapImage对象从URI获取BitmapSource:
    Uri uri = ...;
    BitmapSource bmp = new BitmapImage(uri);
    Console.WriteLine("{0}x{1}", bmp.PixelWIdth, bmp.PixelHeight);
    

    BitmapSource也可以来自解码器。在这种情况下,您将间接使用BitmapFrames。
    Uri uri = ...;
    BitmapDecoder dec = BitmapDecoder.Create(uri, BitmapCreateOptions.None, BitmapCacheOption.Default);
    BitmapSource bmp = dec.Frames[0];
    Console.WriteLine("{0}x{1}", bmp.PixelWIdth, bmp.PixelHeight);
    

    关于.net - WPF中BitmapFrame和BitmapImage之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/155391/

    10-09 18:05