![]() |
Модераторы: Snowy, Alexeis, MetalFan |
![]() ![]() ![]() |
|
Flashboy |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 13.3.2010 Репутация: нет Всего: нет |
Помогите пожалуйста решить задачку.
Есть 2 PNGImage с прозрачными областями, необходимо наложить их друг на друга ("как в Photoshop слои") и сохранить в Третий PNGImage. (Вывод через TImage.picture.assign(PNG_3).) Пробовал через Canvas.Draw и через CopyRect, полупрозрачные переходы приобретают смешанный цвет c clBlack или с цветом заливки если ее проводить. При всем этом образуется погрызенный край. Со Scanline мозгов не хватает, Но это думаю был бы самый идеальный вариант. Это сообщение отредактировал(а) Flashboy - 10.8.2010, 03:27 |
|||
|
||||
AntonN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: 7 Всего: 18 |
примерно как тут http://desksoft.ru/index.php?downloads=att...ents&id=256
а тут есть как png сконвернуть в Tbitmap и обратно http://desksoft.ru/index.php?downloads=att...ents&id=254 |
|||
|
||||
Flashboy |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 13.3.2010 Репутация: нет Всего: нет |
Спасибо но это не подошло, нужно чтобы при всем этом сохранялась прозрачность.
Потому что под Image, в который этот PNG выводиться, происходит анимация на другом Image. В этом случае результат во на рисунке: ![]() А нужно чтобы было так: ![]() Это сообщение отредактировал(а) Flashboy - 3.8.2010, 20:51 |
|||
|
||||
AntonN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.8.2006 Репутация: 7 Всего: 18 |
там в процедуре блита создается буферный битмап. Ну и рисуйте не на канву, а на буферный битмап, который перегоняйте в png (не забывая альфу рисовать в буфере)
|
|||
|
||||
Flashboy |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 13.3.2010 Репутация: нет Всего: нет |
Ага, теперь понятно.
Премного благодарен! Осталось разобраться как правильно битмапу альфу рисовать.. |
|||
|
||||
Flashboy |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 13.3.2010 Репутация: нет Всего: нет |
Все решилось и работает супер! AntonN, Огромное спасибо за то что отозвался и дал направление! |
|||
|
||||
Norfonzor |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 17.10.2008 Репутация: нет Всего: нет |
помогите мне разобраться как наложить PNG друг на друга с прозрачностью!
|
|||
|
||||
Flashboy |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 13.3.2010 Репутация: нет Всего: нет |
это для 2х Png, через конвертацию PNG2BMP => Blend=>BMP2PNG:
И упрощенный вариант, рисуем на буферном BMP и после конвертируем в PNG:
Это сообщение отредактировал(а) Flashboy - 10.3.2011, 20:53 |
||||||
|
|||||||
Norfonzor |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 17.10.2008 Репутация: нет Всего: нет |
Flashboy, у меня появляется ошибка на "Undeclared identifier TPngImage". Компонент TPngImage скачал от сюда: http://delphidevelop.ru/load/0-0-0-36-20, добавил путь (Дельфи -> Main Menu -> Tools -> Environment Options) в Library Path.
Что я сделал не правильно? |
|||
|
||||
Flashboy |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 13.3.2010 Репутация: нет Всего: нет |
В вашем компоненте нет TPngImage, Там есть TPngObject, попробуйте все изменить на него. В моем примере используется TPngImage идущий в составе компонентов D2007-D2010. |
|||
|
||||
Norfonzor |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 17.10.2008 Репутация: нет Всего: нет |
изменил код на:
Хотел нарисовать на клетчатой бумаге черную букву А ![]() выходит не понятно что Это сообщение отредактировал(а) Norfonzor - 12.3.2011, 11:56 |
|||
|
||||
Flashboy |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 13.3.2010 Репутация: нет Всего: нет |
У меня вышло вот что, первое с прозрачным фоном, второе с белым: ![]() ![]() Попробуй вот этот вариант, немного сложнее, работает для подобных задач:
Это сообщение отредактировал(а) Flashboy - 13.3.2011, 15:12 |
|||
|
||||
Norfonzor |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 17.10.2008 Репутация: нет Всего: нет |
Мистика!
2 код:
вот что получилось: ![]() |
|||
|
||||
Flashboy |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 13.3.2010 Репутация: нет Всего: нет |
||||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 5 Всего: 128 |
мням... а если попробовать использовать gdi+?
AFAIK там проблем с прозрачностями и png вроде бы не было... -------------------- There are always someone smarter than you... |
|||
|
||||
Flashboy |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 13.3.2010 Репутация: нет Всего: нет |
||||
|
||||
Norfonzor |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 17.10.2008 Репутация: нет Всего: нет |
MetalFan, помогите пожалуйста, очень важно!
|
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 5 Всего: 128 |
Я вам лишь направление для изысканий дал.
если вечером время будет, попробую "скрестить" два png с пом gdi+ Это сообщение отредактировал(а) MetalFan - 15.3.2011, 19:44 -------------------- There are always someone smarter than you... |
|||
|
||||
Flashboy |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 13.3.2010 Репутация: нет Всего: нет |
MetalFan, заранее спасибо за Ваше время.
Norfonzor, как ни странно я взял Ваш код(Ваш пост) откомпилил и получил результат, тот который был нужен Вам. Пожалуйста напишите какую версию Delphi вы используете и дайте посмотреть тот компонент PNGImage. Это сообщение отредактировал(а) Flashboy - 15.3.2011, 20:35 |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 5 Всего: 128 |
Вобщем то для gdi+ никаких проблем не составило это "скрещивание".
Вот пример кода:
файлы для работы с gdi+ под делфи брать тут Пример отрисовки одного пнг на другой в аттаче. Это сообщение отредактировал(а) MetalFan - 15.3.2011, 22:12 Присоединённый файл ( Кол-во скачиваний: 14 ) ![]() -------------------- There are always someone smarter than you... |
|||
|
||||
Flashboy |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 13.3.2010 Репутация: нет Всего: нет |
А вот и другой пример для GDI+, который взять можно тут GDIPlus.
Для тех кто использует D2009-XE это подойдет.
MetalFan, Ваш пример работает на версиях старше D7, если внести изменения, на которые уже указывали Пост. Это сообщение отредактировал(а) Flashboy - 16.3.2011, 00:44 |
|||
|
||||
Norfonzor |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 17.10.2008 Репутация: нет Всего: нет |
GDI+ под Delphi 7 работает на УРА!
СПАСИБО Flashboy, MetalFan!!! наберу 100постов ПОСТАВЛЮ++ код:
результат: ![]() компонент: http://webfile.ru/5195801 Это сообщение отредактировал(а) Norfonzor - 16.3.2011, 09:43 |
|||
|
||||
gonzales |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 13.3.2006 Репутация: 1 Всего: 2 |
А не подскажет кто-нибудь, как реализовать на GDI+ маскирование одного имиджа по маске из другого файла
Пытаюсь реализовать через Graphics.SetClip, работает только при преобразовании битмапа в регион, но тогда теряется полупрозрачность, что недопустимо Вот такой код не работает
--------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Звук, графика и видео" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |