Russian Qt Forum
Ноябрь 01, 2024, 02:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Прозрачность в QGraphicsRectItem  (Прочитано 4833 раз)
Иволга
Чайник
*
Offline Offline

Сообщений: 58



Просмотр профиля
« : Апрель 13, 2017, 15:04 »

Имеется потомок QGraphicsRectItem, который в paint() отрисовывает QImage.
Без прозрачности результат такой (scr0 во вложении).
Прозрачность 0.4 в QNX (scr1) - то, что нужно.
То же самое в Linux (scr2) - ерунда какая-то, что происходит?
« Последнее редактирование: Апрель 14, 2017, 14:05 от Иволга » Записан
mitrich
Гость
« Ответ #1 : Апрель 14, 2017, 10:26 »

А как прозрачность задаёшь? Через QPainter::setOpacity или альфа-компонент цвета при рисовании устанавливаешь? CompositionMode меняешь? Мало информации, покажи кусок кода что-ли.
Записан
Иволга
Чайник
*
Offline Offline

Сообщений: 58



Просмотр профиля
« Ответ #2 : Апрель 14, 2017, 14:01 »

Задаю свойство QGraphicsRectItem::setOpacity(), больше ничего.
Код:
    
m_pMap->setOpacity(.4);
addItem(m_pMap);
« Последнее редактирование: Апрель 14, 2017, 14:05 от Иволга » Записан
mitrich
Гость
« Ответ #3 : Апрель 14, 2017, 20:11 »

Глюк какой-то. Можно попробовать вместо этого устанавливать прозрачность непосредственно при рисовании в QGraphicsItem::paint()
Код
C++ (Qt)
painter->setOpacity(0.4);
painter->drawImage...
 
и посмотреть на результат.

А ещё чисто из любопытства: вставь этот код в какой-нибудь метод, в котором осуществляется рисование и посмотри, что будет выводится:
Код
C++ (Qt)
#include <typeinfo>
#include <QPaintEngine>
//.....
QPaintEngine *eng = painter->paintEngine();
qDebug() << "Paint engine type:" << eng->type() << "Name:" << typeid(*eng).name();
 
Записан
Иволга
Чайник
*
Offline Offline

Сообщений: 58



Просмотр профиля
« Ответ #4 : Апрель 18, 2017, 10:59 »

Цитировать
Можно попробовать вместо этого устанавливать прозрачность непосредственно при рисовании в QGraphicsItem::paint()
(...)
и посмотреть на результат.
Результат тот же.

Цитировать
А ещё чисто из любопытства: вставь этот код в какой-нибудь метод, в котором осуществляется рисование и посмотри, что будет выводится:
(...)
QPaintEngine *eng = painter->paintEngine();
qDebug() << "Paint engine type:" << eng->type() << "Name:" << typeid(*eng).name();

Paint engine type: 10 Name: 18QRasterPaintEngine
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.161 секунд. Запросов: 22.