В общем у меня при первой прорисовке происходит смещение в 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);
}
Скрин того, как эта бага выглядит. При поедании красного блока, от него тоже полоска появляется. Потом все ок, прорисовки совпадают и т.п.
В общем прошу помощи и подсказок, заранее благодарен.