BitmapPalette Class
Defines the available color palette for a supported image type.
Assembly: PresentationCore (in PresentationCore.dll)
The BitmapPalette type exposes the following members.
| Name | Description | |
|---|---|---|
![]() | BitmapPalette(IList<Color>) | Initializes a new instance of the BitmapPalette class with the specified colors. |
![]() | BitmapPalette(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. |
| Name | Description | |
|---|---|---|
![]() | Colors | Get the colors defined in a palette. |
![]() | Dispatcher | Gets the Dispatcher this DispatcherObject is associated with. (Inherited from DispatcherObject.) |
| Name | Description | |
|---|---|---|
![]() | CheckAccess | Determines whether the calling thread has access to this DispatcherObject. (Inherited from DispatcherObject.) |
![]() | Equals(Object) | Determines whether the specified object is equal to the current object. (Inherited from Object.) |
![]() | GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) |
![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() | ToString | Returns a string that represents the current object. (Inherited from Object.) |
![]() | VerifyAccess | Enforces that the calling thread has access to this DispatcherObject. (Inherited from DispatcherObject.) |
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 Format | This example shows how to convert a BitmapSource to an indexed pixel format. |
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.
