![]() |
Модераторы: Snowy, Alexeis, MetalFan |
![]() ![]() ![]() |
|
WVBR |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 9.5.2006 Репутация: нет Всего: нет |
есть задача нанести на изображение полупрозрачный градиент с переходом от белого цвета с прозрачностью 50% до синего цвета с прозрачностью 5%
вот пример исходника процедуры, которая на image1 наносит градиент при попиксильном анализе, все бы ничего, но получается нанести только один цвет и без указания процентов, как добавить синий цвет и задать процент?
|
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Нужно сформировать изображение битмап в формате 32 бита на пиксель с указанным градиентом по цвету. Затем заполнить 4й байт альфа-канала процентом градиента 0..255 . Далее применяя WinAPI функцию AlphaBlend наложить битмап с градиентом на нужный контекст hDC .
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
WVBR |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 9.5.2006 Репутация: нет Всего: нет |
Alexeis, благодарю за участие
я сделал как ты сказал вот реализация:
вот так вызываю DrawGradient(Image2.Canvas, Rect(0, 0, Image1.Picture.Bitmap.width, Image1.Picture.Bitmap.Height), true, [clblue, clWhite]); ggg ; тоесть создаю градиент на Image2 заливаю картинку на Image1 а затем второй функцией ggg; накладываю картинку с градиентом на на изображение с 50% прозрачностью Blend.SourceConstantAlpha := 155; НО это не по заданию! ведь нужно 95% один цвет и 5% другой. Как это сделать? Это сообщение отредактировал(а) WVBR - 26.1.2013, 16:03 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Чет я не наблюдаю кода заполняющего 4й байт альфаканала степенью прозрачности каждого пиксела. Если есть сомнения в работоспособности, то попробуйте нарисовать картику с альфа прозрачностью в фотшопе, загрузить в TBitmap и затем нарисовать функцией AlphaBlend
Если установлено Blend.AlphaFormat := AC_SRC_ALPHA; то Blend.SourceConstantAlpha := 155; уже не нужно, поскольку прозрачность берется из 4й компоненты каждого пиксела. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
WVBR |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 9.5.2006 Репутация: нет Всего: нет |
задача решена. код реализации. всем спасибо за участие Присоединённый файл ( Кол-во скачиваний: 13 ) ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Звук, графика и видео" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |