![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 07.08.2011
Сообщений: 576
|
![]()
Qt
Как залить другим цветом произвольную ограниченную область? вот два изображения -исходное и что должно получится |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,371
|
![]() |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 07.08.2011
Сообщений: 576
|
![]()
но это наверно очень медленно?
|
![]() |
![]() |
![]() |
#4 |
С++, Delphi
Форумчанин
Регистрация: 24.11.2012
Сообщений: 495
|
![]()
Иначе никак. Фигура ведь произвольная... может быть и шариком и квадратиком.
Если помог, тут весы есть
![]() |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 30.06.2015
Сообщений: 353
|
![]()
В WinAPI GDI32 есть clipping region. Например SelectClipRgn(). Не поверю что в QT нет аналога, хоть и не работал с ним.
А руками делать - это уже как сами сделаете, можно и быстро. |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,371
|
![]()
Для сложных регионов заполнение не сильно быстрее будет.
Кроме того, регион еще создать надо - тоже задача не из тривиальных. В Windows регионы - это набор упорядоченных прямоугольников. Вот и прикиньте, сколько прямоугольников нужны для описания треугольника. Собственно, для создания произвольного региона надо будет проверить каждый пиксель, что не сильно отличается от flood fill алгоритма. |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 30.06.2015
Сообщений: 353
|
![]()
С чего вдруг прямоугольников? А как тогда по-вашему работают?:
CreatePolygonRgn CreateRoundRectRgn CreateEllipticRgn И работа с даже довольно сложными регионами никогда и никак не замедляло. А вообще я забыл про ExtFloodFill() в WinAPI есть, тогда как в таком крутом QT нет аналога? ![]() Какая IDE? Версия QT? |
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 01.06.2015
Сообщений: 497
|
![]()
Зная точки фигуры, можно поступить так:
Код:
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Последний раз редактировалось Krasiosoft; 04.08.2015 в 01:56. |
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 07.08.2011
Сообщений: 576
|
![]()
А что если -
найти границу области, заполнить ее координатами массив отрезков (тут одновременно надо экстраполировать). А Из этих отрезков рисовать закрашенный полигон, это нарисовать можно средствами Qt. Не знаю, может так быстрее будет? ![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Залить на форум | misher | О форуме и сайтах клуба | 5 | 15.08.2010 11:44 |
Залить на народ. | misher | Свободное общение | 2 | 21.07.2010 22:27 |
Залить файл на sendspace | RIO | Работа с сетью в Delphi | 4 | 20.06.2010 01:18 |
Залить сайт | Дініс | Свободное общение | 12 | 20.12.2009 14:28 |
Залить цветом область. | gusluk | Мультимедиа в Delphi | 3 | 31.10.2009 05:58 |