как добавить прозрачные пиксели выше и ниже 32-битных растровых изображений - PullRequest
0 голосов
/ 28 сентября 2010

Мне нужно добавить во время выполнения к изображению памяти 15 строк прозрачных пикселей сверху и 20 снизу.

Изображения загружаются в TcxImagelist (из библиотеки DevExpress Express Library), поэтому их можно получить как 32-битные растровые изображения.

Если изображение 400х75, после манипуляции должно быть 400х (75 + 15 + 20) = 400х110

Как выполнить эту задачу?

1 Ответ

2 голосов
/ 28 сентября 2010

Нет такой вещи как "прозрачные" пиксели.Все, что вы можете сделать, это пометить их для средства визуализации, чтобы он знал, что они не должны отображаться.Вот 3 наиболее распространенных способа пометки, но какой из них вы используете, зависит от того, когда вы делаете для рендеринга:

  • Используйте карту прозрачности: второе растровое изображение, которое указывает «уровень» прозрачностикаждый пиксель.Затем рендеринг использует это как весовое значение для объединения верхнего и нижнего слоев в окончательный цвет.Если вам нужна только двоичная прозрачность (непрозрачная / прозрачная), вы можете использовать растровое изображение и использовать простое XOR для каждого пикселя, что делает его очень быстрым.
  • Определите «прозрачный цвет».Затем вы можете XOR с прозрачным цветом и нижним слоем.Также очень быстро и не требует дополнительного хранения.Однако у него есть некоторые побочные эффекты (например, один цвет нельзя использовать в изображении верхнего слоя)
  • использует последний байт 32-битного растрового изображения в качестве уровня прозрачности (альфа-канал).По сути, вы сохраняете карту прозрачности (255 различных уровней прозрачности) вместе с изображением.

Теперь, в вашем случае, поскольку вы, похоже, копируете только прямоугольник поверх прямоугольника, еще один подход, которыйбыло бы: создать холст того же размера, что и конечное изображение, скопировать нижний прямоугольник на него и нарисовать слой to поверх него.

...