Export (0) Print
Expand All

BitmapFrame Class

Represents image data returned by a decoder and accepted by encoders. This is an abstract class.

Namespace: System.Windows.Media.Imaging
Assembly: PresentationCore (in presentationcore.dll)
XML Namespace:  http://schemas.microsoft.com/winfx/2006/xaml/presentation

public abstract class BitmapFrame : BitmapSource, IUriContext
public abstract class BitmapFrame extends BitmapSource implements IUriContext
public abstract class BitmapFrame extends BitmapSource implements IUriContext
This class is abstract; see Inheritance Hierarchy for derived non-abstract classes usable in XAML.

BitmapFrame provides additional functionality not defined by BitmapSource by providing access to the Thumbnail associated with a particular frame of an image. BitmapFrame also supports the writing of metadata information by using the Metadata property or the CreateInplaceBitmapMetadataWriter method.

Any BitmapFrame returned from a decoder is always frozen. If you require a modifiable copy, you must first create a copy of the BitmapFrame by using the Clone method.

Only Tagged Image File Format (TIFF) and Graphics Interchange Format (GIF) format images support multiple frames.

The following code example demonstrates how to create a new BitmapSource by using a BitmapFrame.

int width = 128;
int height = width;
int stride = width/8;
byte[] pixels = new byte[height*stride];

// Try creating a new image with a custom palette.
List<System.Windows.Media.Color> colors = new List<System.Windows.Media.Color>();
colors.Add(System.Windows.Media.Colors.Red);
colors.Add(System.Windows.Media.Colors.Blue);
colors.Add(System.Windows.Media.Colors.Green);
BitmapPalette myPalette = new BitmapPalette(colors);

// Creates a new empty image with the pre-defined palette

BitmapSource image = BitmapSource.Create(
    width,
    height,
    96,
    96,
    PixelFormats.Indexed1,
    myPalette, 
    pixels, 
    stride);

FileStream stream = new FileStream("empty.tif", FileMode.Create);
TiffBitmapEncoder encoder = new TiffBitmapEncoder();
TextBlock myTextBlock = new TextBlock();
myTextBlock.Text = "Codec Author is: " + encoder.CodecInfo.Author.ToString();
encoder.Frames.Add(BitmapFrame.Create(image));
MessageBox.Show(myPalette.Colors.Count.ToString());
encoder.Save(stream);


The following code example demonstrates how to use the BitmapFrame object to open a Portable Network Graphics (PNG) graphic and write metadata by using the CreateInPlaceBitmapMetadataWriter method.

Stream pngStream = new System.IO.FileStream("smiley.png", FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
PngBitmapDecoder pngDecoder = new PngBitmapDecoder(pngStream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
BitmapFrame pngFrame = pngDecoder.Frames[0];
InPlaceBitmapMetadataWriter pngInplace = pngFrame.CreateInPlaceBitmapMetadataWriter();
if (pngInplace.TrySave() == true)
{ pngInplace.SetQuery("/Text/Description", "Have a nice day."); }
pngStream.Close();

System.Object
   System.Windows.Threading.DispatcherObject
     System.Windows.DependencyObject
       System.Windows.Freezable
         System.Windows.Media.Animation.Animatable
           System.Windows.Media.ImageSource
             System.Windows.Media.Imaging.BitmapSource
              System.Windows.Media.Imaging.BitmapFrame

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0

Community Additions

ADD
Show:
© 2014 Microsoft