ventajas vectorial usos una que mapa imagen entre ejemplos diferencia desventajas corel caracteristicas .net wpf

.net - vectorial - Diferencia entre un mapa de bits y una imagen de mapa de bits en WPF



que es un mapa de bits en corel draw (3)

¿Cuál es la diferencia entre un BitmapFrame y BitmapImage en WPF? ¿Dónde usarías cada uno (es decir, por qué usarías un BitmapFrame en lugar de un BitmapImage?)


BitmapFrame es una primitiva de bajo nivel para la manipulación de imágenes. Por lo general, se utiliza cuando desea codificar / decodificar algunas imágenes de un formato a otro.

BitmapImage es una abstracción de más alto nivel que tiene algunas propiedades claras de unión de datos (UriSource, etc.).

Si solo muestras imágenes y quieres un ajuste fino, BitmapImage es lo que necesitas.

Si está haciendo manipulación de imágenes de bajo nivel, necesitará BitmapFrame.


Debería seguir utilizando la clase abstracta BitmapSource si necesita obtener los bits, o incluso ImageSource si solo desea dibujarlo.

La implementación BitmapFrame es solo la naturaleza orientada a objetos de la implementación que se muestra. Realmente no debería tener ninguna necesidad de distinguir entre las implementaciones. BitmapFrames puede contener un poco de información adicional (metadatos), pero por lo general solo le importaría una aplicación de imágenes.

Notarás estas otras clases que heredan de BitmapSource:

  • BitmapFrame
  • Imagen de mapa de bits
  • CachedBitmap
  • ColorConvertedBitmap
  • CroppedBitmap
  • FormatConvertedBitmap
  • RenderTargetBitmap
  • TransformedBitmap
  • WriteableBitmap

Puedes obtener un BitmapSource desde un URI construyendo un objeto BitmapImage:

Uri uri = ...; BitmapSource bmp = new BitmapImage(uri); Console.WriteLine("{0}x{1}", bmp.PixelWIdth, bmp.PixelHeight);

BitmapSource también podría provenir de un decodificador. En este caso, está utilizando indirectamente 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);


Sé que esta es una pregunta antigua, pero la respuesta aceptada es incompleta (no sugerir que mi respuesta esté completa tampoco) y mi adición puede ayudar a alguien en alguna parte.

La razón (aunque sea la única ) que uso un BitmapFrame es cuando accedo a los marcos individuales de una imagen TIFF de múltiples marcos utilizando la clase TiffBitmapDecoder . Por ejemplo,

TiffBitmapDecoder decoder = new TiffBitmapDecoder( new Uri(filename), BitmapCreateOptions.None, BitmapCacheOption.None); for (int frameIndex = 0; frameIndex < decoder.Frames.Count; frameIndex++) { BitmapFrame frame = decoder.Frames[frameIndex]; // Do something with the frame // (it inherits from BitmapSource, so the options are wide open) }