Вопрос № 53340: Здравия желаю, уважаемые эксперты!
Мне нужно сделать, чтобы картинка была транспарентной, то есть в основном она показывалась, а фон, который будет к примеру черный, был прозрачным по отношению к тому изображению, где эта картинка установлена. Ст...
Вопрос № 53.340
Здравия желаю, уважаемые эксперты!
Мне нужно сделать, чтобы картинка была транспарентной, то есть в основном она показывалась, а фон, который будет к примеру черный, был прозрачным по отношению к тому изображению, где эта картинка установлена. Стандартные контролы Image и PictureBox не поддерживают такую возможность. Подскажите, что нужно сделать, чтобы получить такой эффект.
Отвечает: Митрофанов Артем Борисович
Здравствуйте, Таянчин Алексей Геннадьевич!
Прозрачность можно установить с помощью графического редактора, после чего проозрачную картинку можно установить на фон
Ответ отправил: Митрофанов Артем Борисович (статус: 4-ый класс)
Ответ отправлен: 26.08.2006, 14:42 Оценка за ответ: 3
Отвечает: Кокорич Вадим Леонидович
Здравствуйте, Таянчин Алексей Геннадьевич!
Неплохой пример использования накладки одного изображения на другое - в примере Н. Культина "Анимация". Изучив код, Вы разберетесь, как добиться прозрачности части одного изображения на фоне другого (см. приложение). Отбросить лишнее помогут комментарии к программе (она совсем короткая).
Приложение:
--------- Труд сделал обезьяну человеком, а лень человека - программистом !
Ответ отправил: Кокорич Вадим Леонидович (статус: 5-ый класс)
Ответ отправлен: 26.08.2006, 15:29 Оценка за ответ: 5 Комментарий оценки: Спасибо, все работает отлично! Теперь сделаю свой контрол типа PictureBox с возможностью прозрачности!
Отвечает: C4tnt
Здравствуйте, Таянчин Алексей Геннадьевич!
Если вы решились сделать контрол - посоветую вам более быстрый вариант:
Нужны:
Картинка
Маска
Фон
Маска - картинка, на которой белым цветом закрашено прозрачное место, а чёрным - всё остальное
На вашей картинке прозрачное место должно быть чёрным.
Можно получать дополнительные спецэффекты, такие как изолированный канал (в результате в этом месте будет видна только одна компонента цвета) или смещение (в этом месте цвет будет ограничен по яркости снизу)
Для изоляции канала на маске рисуем цветом, который должен остаться (то есть через красный цвет на маске будет видна красная часть фоновой картинки). Используйте максимально насыщенные цвета. (RGB(255,0,0) и т.п.)
Для смещения рисуем цветом на картинке в её прозрачной части. Для того, чтобы не было проблем
используйте только яркости каналов, имеющие вид 2^n - 1 (0<=n<=8).
Маску можно получить по картинке автоматически
Пример в приложении
Создайте 4 PictureBox'а: Pica,Picb,Picc,PicOut
UpdateResult - рисует картинку в PicOut
MakeMask - создаёт маску
Маску можно получить ещё быстрее, используя winAPI
Приложение:
--------- Теперь к нашим ответам осталось лишь найти вопросы
Ответ отправил: C4tnt (статус: 2-ой класс)
Ответ отправлен: 27.08.2006, 13:38 Оценка за ответ: 5 Комментарий оценки: Я уже сделал контрол, немного по другому, но все равно, спасибо за совет!