Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
 Аватар для OmutMoren
17 / 17 / 0
Регистрация: 04.06.2012
Сообщений: 88

Полупрозрачное рисование

01.11.2012, 18:29. Показов 2674. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Вопрос в следующем: имеется компонент TImage. Я рисую на нём кривую (например синусоиду) и закрашиваю верхнюю область в красный цвет с помощью метода FloodFill. Как мне сделать закраску полупрозрачной???
Вот картинка:


И вот код, по которому я закрашиваю выделенную мышкой область в красный цвет:
C++
1
2
3
4
5
6
void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    Image1->Canvas->Brush->Color = clRed;
    Image1->Canvas->FloodFill(X,Y,clWhite,bsSolid);
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.11.2012, 18:29
Ответы с готовыми решениями:

Полупрозрачное окно
Здравствуйте. Подскажите, пожалуйста, как сделать полупрозрачное окно не убирая кнопки ресайза и закрытия ? Добавлено через 3 часа...

Сделать полупрозрачное меню
Сделать форму, при правой кнопкой мыши должно появиться меню, меню должно быть полупрозрачной серого цвета. Использовать нужно mainmenu ....

Как наложить полупрозрачное изображение
Посмотрите программу. Существует ли какая-либо возможность средствами Visual Basic или API наложить полупрозрачное изображение? ...

10
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
01.11.2012, 23:37
Используй функцию AlphaBlend()
0
 Аватар для OmutMoren
17 / 17 / 0
Регистрация: 04.06.2012
Сообщений: 88
02.11.2012, 12:59  [ТС]
Изучил, но этот компонент работает только с изображениями, помещёнными в Image. Но у меня вопрос был о том как мне сделать закраску кистью полупрозрачной? То есть этот вопрос относится к Canvas'у.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
02.11.2012, 13:42
Не знаю, возможна ли заливка цветом с учетом альфа-канала. Если заливаемая область однотонна, то, как вариант, можно вычислять результирующий цвет от наложения одного на другой с прозрачностью и заливать уже этим цветом.
0
 Аватар для OmutMoren
17 / 17 / 0
Регистрация: 04.06.2012
Сообщений: 88
02.11.2012, 15:07  [ТС]
Эм...я вас не понял. Поясните пожалуйста.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
02.11.2012, 15:55
Нарисовать полупрозрачный прямоугольник на Bitmap или Image
0
 Аватар для OmutMoren
17 / 17 / 0
Регистрация: 04.06.2012
Сообщений: 88
02.11.2012, 17:26  [ТС]
Вроде разобрался с AlphaBlend(). Но теперь проблема в следующем: вот начальная картинка на Image1 и синусоида на Image2 (нарисована на Canvas'е):

Но в результате делается полупрозрачной не только выделенная область, но и вся остальная:


Как с этим бороться? Кстати, в Image2 загружена картинка с белым фоном. Я конечно понимаю что это как раз таки из-за него, но иначе никак...

Что посоветуете?
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
05.11.2012, 13:19
Цитата Сообщение от OmutMoren Посмотреть сообщение
Что посоветуете?
Я пробовал эту AlphaBlend и не понял, как подстроиться под AC_SRC_ALPHA (см. BLENDFUNCTION)
Этот флаг указывает, что в изображении каждый пиксель имеет альфа-канал. Но вычисление же результирующего цвета непонятно, как происходит (вычисление происходит совсем по-другому нежели без этого флага).

Похоже единственный вариант - это написать свою функцию AlphaBlend, поддерживающую полупрозрачность совместно с прозрачностью.
У меня есть наработка этой функции, но выложу не раньше, чем завтра (сейчас у меня ее с собой нету)
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
05.11.2012, 16:03
Я привел ссылку там вариант с AlphaBlend(), но я там также привел пример как обработать попиксельно.

Добавлено через 2 минуты
Что посоветуете?
Все очевидн "альфблендить" полуволну отдельно, а потом накладывать её на рисунок...
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
06.11.2012, 14:00
Как и обещал. Выкладываю свой пример. В нем используется функция MyAlphaBlend, которая накладывает одно изображение на другое с учетом полупрозрачности, а также учиватывая цвет, выбранный в качестве прозрачного. По скорости неплохо отрабатывает, еще лучше оптимизировать наверно не получится.
Вложения
Тип файла: rar Полупрозрачность + прозрачность.rar (1.35 Мб, 64 просмотров)
1
 Аватар для OmutMoren
17 / 17 / 0
Регистрация: 04.06.2012
Сообщений: 88
07.11.2012, 15:59  [ТС]
kzru_hunter, огромное спасибо!!! То что нужно!

Добавлено через 2 минуты
Но что-то сложновато всё сделано
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.11.2012, 15:59
Помогаю со студенческими работами здесь

Полупрозрачное окно в анимации AVI.
Короче задача следующая: Задний фон - AVI файл, т.е. анимация, а на ней должно быть полупрозрачное окно. Короче есть проигрыватель...

Добавить на кнопку полупрозрачное изображение
Мне нужно на кнопку поставить изображение, но не простое, а полу прозрачное. Ну например вот такое: но кнопки виден белый фон, а мне...

На старом ЖК - мониторе полупрозрачное пятно.
Появилось полупрозрачное пятно на довольно старом ЖК - мониторе и каждый день увеличивается на пару - тройку пикселей. Выбрасывать ли мне...

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

Как вывести полупрозрачное сообщение с заданной задержкой
Доброго времени суток! Подскажите, пожалуйсста, как вывести полупрозрачное всплывающее сообщение, сообщение, как в Outlook о приходе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru