Поделиться через


BitmapPalette Конструкторы

Определение

Инициализирует новый экземпляр класса BitmapPalette.

Перегрузки

BitmapPalette(IList<Color>)

Инициализирует новый экземпляр BitmapPalette указанными цветами.

BitmapPalette(BitmapSource, Int32)

Инициализирует новый экземпляр класса BitmapPalette на основе указанного объекта BitmapSource. Новый объект BitmapPalette ограничен указанным максимальным количеством цветов.

BitmapPalette(IList<Color>)

Инициализирует новый экземпляр BitmapPalette указанными цветами.

public:
 BitmapPalette(System::Collections::Generic::IList<System::Windows::Media::Color> ^ colors);
public BitmapPalette (System.Collections.Generic.IList<System.Windows.Media.Color> colors);
new System.Windows.Media.Imaging.BitmapPalette : System.Collections.Generic.IList<System.Windows.Media.Color> -> System.Windows.Media.Imaging.BitmapPalette
Public Sub New (colors As IList(Of Color))

Параметры

colors
IList<Color>

Цвета, добавляемые в пользовательскую палитру.

Исключения

Параметр colors имеет значение null.

Параметр colors меньше 1 или больше 256.

Примеры

В следующем примере показано, как определить пользовательский BitmapPalette объект и применить его к новому 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);
Dim width As Integer = 128
Dim height As Integer = width
Dim stride As Integer = CType(width / 8, Integer)
Dim pixels(height * stride) As Byte

' Try creating a new image with a custom palette.
Dim colors As New List(Of 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)
Dim myPalette As New BitmapPalette(colors)

' Creates a new empty image with the pre-defined palette
Dim image As BitmapSource = System.Windows.Media.Imaging.BitmapSource.Create(width, height, 96, 96, PixelFormats.Indexed1, myPalette, pixels, stride)
Dim stream As New FileStream("empty.tif", FileMode.Create)
Dim encoder As New TiffBitmapEncoder()
Dim myTextBlock As 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)

См. также раздел

Применяется к

BitmapPalette(BitmapSource, Int32)

Инициализирует новый экземпляр класса BitmapPalette на основе указанного объекта BitmapSource. Новый объект BitmapPalette ограничен указанным максимальным количеством цветов.

public:
 BitmapPalette(System::Windows::Media::Imaging::BitmapSource ^ bitmapSource, int maxColorCount);
[System.Security.SecurityCritical]
public BitmapPalette (System.Windows.Media.Imaging.BitmapSource bitmapSource, int maxColorCount);
public BitmapPalette (System.Windows.Media.Imaging.BitmapSource bitmapSource, int maxColorCount);
[<System.Security.SecurityCritical>]
new System.Windows.Media.Imaging.BitmapPalette : System.Windows.Media.Imaging.BitmapSource * int -> System.Windows.Media.Imaging.BitmapPalette
new System.Windows.Media.Imaging.BitmapPalette : System.Windows.Media.Imaging.BitmapSource * int -> System.Windows.Media.Imaging.BitmapPalette
Public Sub New (bitmapSource As BitmapSource, maxColorCount As Integer)

Параметры

bitmapSource
BitmapSource

Исходное растровое изображение, из которого считывается или на основе которого создается палитра.

maxColorCount
Int32

Максимальное количество цветов, которое может использоваться в новом объекте BitmapPalette.

Атрибуты

Исключения

Параметр bitmapSource имеет значение null.

Примеры

В следующем примере показано, как получить BitmapPalette из изображения.


// 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);
' Get the palette from an image
Dim image2 As New BitmapImage()
image2.BeginInit()
image2.UriSource = New Uri("tulipfarm.tif", UriKind.RelativeOrAbsolute)
image2.EndInit()
Dim myPalette3 As New BitmapPalette(image2, 256)

'Draw the third Image
Dim myImage2 As New Image()
myImage2.Source = image2
myImage2.Stretch = Stretch.None
myImage2.Margin = New Thickness(20)

Комментарии

Если уже bitmapSource имеет определенную палитру, возвращается соответствующая палитра. В противном случае новая палитра создается на основе анализа растрового изображения.

См. также раздел

Применяется к