как скопировать выделенную область из TPngObject в другой TPngObject, сохранив его прозрачность - PullRequest
1 голос
/ 04 февраля 2011

у меня есть два разных TPngObject SRC и DST. SRC назначил с графикой PNG.

Мой код:

dst := TpngImage.createblank(COLOR_RGB, 16, 900, 60);
src.Assign(Image2.Picture.Graphic);

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

Ответы [ 2 ]

2 голосов
/ 04 февраля 2011

Думаю, вы сможете сделать это с помощью функции AlphaBlend. Вы используете {SRC/DEST}.Canvas.Handle для параметров HDC.

Полагаю, вы также можете добиться этого с BitBlt.

Мне все еще интересно узнать значение свойства TransparencyMode ваших экземпляров TPNGImage.

1 голос
/ 04 февраля 2011

Я не использую TPNGImage, но я попробую сделать это ... поддерживает ли он свойство Pixels или Scanline? Если это так, вы можете скопировать только те пиксели, которые вам нужны, вручную установив значения r, g, b и a. Я делаю это много с растровыми изображениями pf32bit. Рисование этого, как вы заметили, не сохранит прозрачность. Вы должны установить альфа-значение вручную.

Если TPNGImage не поддерживает пиксели или линию сканирования, вы можете сначала преобразовать png в растровые изображения и сделать это таким образом.

...