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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Fill alpha rect  (Прочитано 1936 раз)
ammaximus
Гость
« : Август 02, 2012, 00:14 »

Код:
void Pictogramm::addBlankPictogramm(QColor c,int w,int h)
{
    QPixmap *pm = new QPixmap(w,h);
    QPainter p(pm);
    p.fillRect(0,0,w,h,c);
    p.end();
    state.push_back(pm);
    stateAmount++;
}
В этой процедуре я пытаюсь создать пустую pixmap, но если на вход подать цвет со значением альфа канала <255 заливает черным и вижу артефакты. Другие pixmap, с альфа взятым из png файла отображаются правильно.

Код:
void Pictogramm::addPictogramm(QString path){
   state.push_back(new QPixmap(path));  
   stateAmount++;
}

Pixmap в последствии отрисовываются вот так:

Код:
void Pictogramm::paintEvent(QPaintEvent *e)
{
    if (!state.empty())
    {
        QPainter p(this);
        QPixmap *pm=new QPixmap(state[currentState]->scaled(this->width(),this->height(),Qt::IgnoreAspectRatio));

        p.fillRect(0,0,width(),height(),QBrush(*pm));
        p.end();
    }
}
« Последнее редактирование: Август 02, 2012, 00:18 от ammaximus » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Август 02, 2012, 10:29 »

В этой процедуре я пытаюсь создать пустую pixmap, но если на вход подать цвет со значением альфа канала <255 заливает черным и вижу артефакты. Другие pixmap, с альфа взятым из png файла отображаются правильно.
После создания пиксмапа залей его Qt::transparent.
Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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