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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Неправильная первая прорисовка QImage  (Прочитано 1662 раз)
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);
}
Скрин того, как эта бага выглядит. При поедании красного блока, от него тоже полоска появляется. Потом все ок, прорисовки совпадают и т.п.

В общем прошу помощи и подсказок, заранее благодарен.
« Последнее редактирование: Август 10, 2012, 19:57 от Lagovas » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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