понеділок, 5 вересня 2011 р.

Як швидко зобразити видимість прозорого кольору у вашому Qt image viewer


Необхідність вигадати цей велосипед виникла коли я вирішив додати блиску для власної утиліти що спрощує процес вирізання окремих текстур з cut images.
Виявляється алгоритм побудови такого зображення є дуже простим.


void ImageWidget::paintEvent( QPaintEvent * event )
{
    QPainter painter(this);

    const QRect area = event->rect();
    const int square = 8;
    int x = (area.left()%square)*square;
    int y = (area.top()%square)*square;
    while (y < area.bottom()) {
        x = 0;
        while (x < area.right()) {
            const QColor fill = ((x+y)/square)%2?Qt::gray:Qt::lightGray;
            painter.fillRect(x, y, square, square, fill);

            x += square;
        }
        y += square;
    }
}

По моєму вийшло досить лаконічно і дуже непогано.

Попередження: в реальних проектах де потрібно дотримуватися мінливих вимог дизайнерів краще використати QPainter::fillRect( ,QBrush(QPixmap));