Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Lagovas от Август 10, 2012, 19:54



Название: Неправильная первая прорисовка QImage
Отправлено: Lagovas от Август 10, 2012, 19:54
В общем у меня при первой прорисовке происходит смещение в 1 пиксель по x и y, дальше нормально, вследствие чего появляются ненужные линии. Искал, не нашел из-за чего может быть, мб у кого опыт побольше и встречал такое подскажет из-за чего такое может быть?
Это игра змейка, рисуется все блоками. Вот код прорисовки. На вход приходит координата с учетом расположения и размеров. Т.е. хранятся координаты блока и змеи вроде (0,0), (0,1), потом передается типа DrawBlock(QPoint(block.x()*blockSize, block.y()*blockSize)). В коде по другому, но просто описываю как приблизительно передается. В итоге первая прорисовка смещена чуток, и каждый раз при потере\появлении фокуса на приложении. Во время самой игры когда фокус в игре, все ок идет, прорисовка всегда одинакова.
Код:
void QPainterBlock::DrawBlock(const QPoint &block, const QBrush &brush)
{
    tempBlock = █
    tempBrush = &brush;
    isNeedDrawBlock = true;

    QPainter painter(image);

    if (isNeedDrawBlock)
    {
        painter.setBrush(*tempBrush);
        painter.setPen(tempBrush->color());
        painter.drawRect(tempBlock->x(), tempBlock->y(), size, size);
        isNeedDrawBlock = false;
    }
    repaint(block.x(), block.y(), size, size);
}

void QPainterBlock::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    painter.drawImage(QPoint(0,0), *image);
}
Скрин того, как эта бага выглядит. При поедании красного блока, от него тоже полоска появляется. Потом все ок, прорисовки совпадают и т.п.
(http://data4.floomby.com/files/previews/10_8_2012/8g911YYvr0mmMBah4AdYeQ.jpg) (http://floomby.ru/s1/785Gf)
В общем прошу помощи и подсказок, заранее благодарен.