![]() |
|
|
![]()
|
|
| wowka19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 30.11.2011 Репутация: нет Всего: нет |
Есть объект от QGraphicsItem.
В QGraphicsItem::paint() сначала рисуется всякое, а потом некоторую прямоугольную область из этого нужно удалить, НО так чтобы эта область стала прозрачной и сквозь нее были видны (проглядывали) другие объекты сцены (с меньшим Z). QPainter::eraseRect() - не помог, он закрашивает область былым, а нужно "запрозрачнить" ее, как будто там ничего не рисовалось. Это сообщение отредактировал(а) wowka19 - 17.4.2014, 07:00 |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
По идее, нужно рисовать цветом созданным конструктором QColor(r, g, b, a); Параметр a задеет прозрачность a=255 - непрозрачный цвет, a=0 - полностью прозрачный цвет. Но в Qt я не пробовал.
|
|||
|
||||
| wowka19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 30.11.2011 Репутация: нет Всего: нет |
уже так пробовал - эффект = 0
|
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
PS: Если нужно рисовать не закрашенный прямоугольник, кисть для него нужно задать QBrush(Qt::NoBrush);
|
|||
|
||||
| wowka19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 30.11.2011 Репутация: нет Всего: нет |
и так тоже пробовал - эффект = 0 ()ничего не рисуется
Добавлено через 2 минуты и 29 секунд + еще вопрос: хочу сделать составной элемент из QGraphucsItem'ов (или QGraphicsObject'ов). Что мне использовать? QGraphucsItemGroup или QGraphucsItem в качестве родителя? |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
По идее, достаточно QGraphicsItemGroup. Но у меня с ним были проблемы, не помню какие, делал свой класс производный от QGraphicsItem.
При рисовании обычных виджетов прозрачность и Qt::NoBrush работает - сейчас смотрел Gradients Demo. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
wowka19, паинтер заменяет пиксели в момент отрисовки. Таким образом, восстановить нижний слой невозможно иначе, как отрисовав его заново. Как вариант, ты можешь нарисовать верхний слой в отдельный QImage. Затем отрисовать видимые куски верхнего слоя поверх нижнего.
|
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |