Show / Hide Table of Contents

Практическое руководство. Использование таблицы перераспределения цветов

Преобразование — это процесс преобразования цветов в изображении в соответствии с таблицей сопоставления цветов. Таблицы преобразования цветов представляет собой массив ColorMap объектов. Каждый ColorMap объект в массиве имеет OldColor свойство и NewColor свойство.

Когда GDI+ рисовании изображения каждого пикселя изображения с помощью сравнивается с массив старых цветов. Если цвет пикселя совпадает со старым цветом, его цвет изменяется на соответствующий новый цвет. Цвета изменяются только для подготовки к просмотру — значения цвета самого изображения (хранящиеся в Image или Bitmap объекта), не изменяются.

Чтобы нарисовать пересопоставленный изображение, инициализируйте массив ColorMap объектов. Передайте массив SetRemapTable метод ImageAttributes , а затем передать ImageAttributes объект DrawImage метод Graphics объекта.

Пример

В следующем примере создается Image объекта из файла RemapInput.bmp. Код создает таблицу преобразования цветов, состоящий из одного ColorMap объекта. OldColor Свойство ColorRemap объекта отображается красным цветом, а NewColor свойство имеет значение blue. Изображение будет рисоваться один раз без изменения сопоставления и один раз с повторное сопоставление. В процессе преобразования все Красные пиксели на синий.

Ниже показан исходное изображение в левой части и преобразованное изображение справа.

Снимок экрана, показывающий исходного изображения, а преобразованное изображение.

Image image = new Bitmap("RemapInput.bmp");
ImageAttributes imageAttributes = new ImageAttributes();
int width = image.Width;
int height = image.Height;
ColorMap colorMap = new ColorMap();

colorMap.OldColor = Color.FromArgb(255, 255, 0, 0);  // opaque red
colorMap.NewColor = Color.FromArgb(255, 0, 0, 255);  // opaque blue

ColorMap[] remapTable = { colorMap };

imageAttributes.SetRemapTable(remapTable, ColorAdjustType.Bitmap);

e.Graphics.DrawImage(image, 10, 10, width, height);

e.Graphics.DrawImage(
   image,
   new Rectangle(150, 10, width, height),  // destination rectangle 
   0, 0,        // upper-left corner of source rectangle 
   width,       // width of source rectangle
   height,      // height of source rectangle
   GraphicsUnit.Pixel,
   imageAttributes);

Компиляция кода

Предыдущий пример предназначен для работы с Windows Forms и требует PaintEventArgse, который является параметром Paint обработчик событий.

См. также

  • Перекрашивание изображений
  • Работа с растровыми и векторными изображениями с использованием классов Image, Bitmap и Metafile
Back to top Неофициальная документация по .NET на русском языке. Лицензия: CC-BY 4.0. Основано на документации по .NET с Microsoft Docs
Generated by DocFX