Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: ammaximus от Август 02, 2012, 00:14



Название: Fill alpha rect
Отправлено: 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();
    }
}


Название: Re: Fill alpha rect
Отправлено: GreatSnake от Август 02, 2012, 10:29
В этой процедуре я пытаюсь создать пустую pixmap, но если на вход подать цвет со значением альфа канала <255 заливает черным и вижу артефакты. Другие pixmap, с альфа взятым из png файла отображаются правильно.
После создания пиксмапа залей его Qt::transparent.