crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> жуткие тормоза при отрисовке фона программы (drawImage)
Rocky
  опции профиля:
сообщение 5.2.2010, 0:19
Сообщение #1


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Еще раз всем привет... Вот столкнулся с очередной проблемкой... Есть такой кусок кода
//в конструкторе класса
m_oBackgroundImage = QImage(GetApplicationDirPath() + "/UI/_Back.jpg");

//далее отрисовка
void CStationClient::paintEvent(QPaintEvent *pEvent)
{
    QPainter oPainter(this);
    oPainter.drawImage(this->rect(), m_oBackgroundImage);
    pEvent->accept();
}

И все. В винде все летает.... скомпилил в линуксе - загрузка цп под 80%. Тормоза просто дикие. Почему так может быть? 2 часа пытался понять что за фигня. У меня KDE со всеми наворотами, compiz все летает просто.. а тут простенькая программа одной функцией по сути убивает все..... Как лучше всего фон программе задать? Единственное что в голову приходит это запихнуть в ремурсы... Утром проверю поможет ли это или нет... Но непонятно почему так тормозит программа из-за этого? _Back.jpg размером 1280х1024.... Весит 300 КБ....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Rocky
  опции профиля:
сообщение 6.2.2010, 2:40
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Вобщем я все понял.. дело было в реалтзации той отрисовки поверх виджетов о которой говорилось ранее... Завтра попробую скомпилить тот тестовый пример с бабой =) и погонять его тут.

В конченом итоге сделал так:
//в конструкторе
    //устанавливаем фон главному окну
    const QString& sBackgroundFileName = qApp->applicationDirPath() + tr("/UI/Background.png");
    const int nWD = QApplication::desktop()->width();
    const int nHD = QApplication::desktop()->height();

    QImage oImage(sBackgroundFileName);
    if (!oImage.isNull())
    {
        if (oImage.size() != QSize(nWD, nHD))
        {
            oImage = oImage.scaled(nWD, nHD);
            oImage.save(sBackgroundFileName);
        }
    }

    qApp->setStyleSheet(QString("QMainWindow { "
        "background-image:url(" + sBackgroundFileName + ");"
        "background-repeat: no-repeat;"
        "background-position: center;"
    "}"
    ));
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.11.2024, 7:23