BitmapPalette Class

Defines the available color palette for a supported image type.

System.Object
  System.Windows.Threading.DispatcherObject
    System.Windows.Media.Imaging.BitmapPalette

Namespace:  System.Windows.Media.Imaging
Assembly:  PresentationCore (in PresentationCore.dll)

public sealed class BitmapPalette : DispatcherObject

The BitmapPalette type exposes the following members.

  NameDescription
Public methodBitmapPalette(IList<Color>)Initializes a new instance of the BitmapPalette class with the specified colors.
Public methodBitmapPalette(BitmapSource, Int32)Initializes a new instance of the BitmapPalette class based on the specified BitmapSource. The new BitmapPalette is limited to a specified maximum color count.
Top

  NameDescription
Public propertyColorsGet the colors defined in a palette.
Public propertyDispatcherGets the Dispatcher this DispatcherObject is associated with. (Inherited from DispatcherObject.)
Top

  NameDescription
Public methodCheckAccessDetermines whether the calling thread has access to this DispatcherObject. (Inherited from DispatcherObject.)
Public methodEquals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Public methodGetHashCodeServes as the default hash function. (Inherited from Object.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)
Public methodVerifyAccessEnforces that the calling thread has access to this DispatcherObject. (Inherited from DispatcherObject.)
Top

Only Tagged Image File Format (TIFF) and Graphics Interchange Format (GIF) image formats support image palettes. However, other image types can be used to define a BitmapPalette. Attempting to define a BitmapPalette for an unsupported bitmap format does not result in an exception; the designated BitmapPalette is simply ignored.

Windows Presentation Foundation (WPF) supports both custom color palettes and predefined palettes defined by the BitmapPalettes class.

The following example demonstrates how to define a custom BitmapPalette and apply it to a new BitmapSource.

            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 example demonstrates how to retrieve a BitmapPalette from an image.


// Get the palette from an image
BitmapImage image2 = new BitmapImage();
image2.BeginInit();
image2.UriSource = new Uri("tulipfarm.tif", UriKind.RelativeOrAbsolute);
image2.EndInit();
BitmapPalette myPalette3 = new BitmapPalette(image2, 256);

//Draw the third Image
Image myImage2 = new Image();
myImage2.Source = image2;
myImage2.Stretch = Stretch.None;
myImage2.Margin = new Thickness(20);

More Code

How to: Convert a BitmapSource to an Indexed Pixel FormatThis example shows how to convert a BitmapSource to an indexed pixel format.

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft