Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как присвоить значение двухмерного массива объекту Qpixmap
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Система рисования. Печать
zuze
Я рисую картинку в paintEvent() с помощью двух циклов (циклы большие), после этого выводится линия которая передвигается на определённое расстояние.
Но при выводе этой картинки из двух циклов, скорость передвижения линии падает, а если не выводить картинку, то линия выводится и передвигается как обычно.
Как я понял из-за того, что paintEvent() выполняется многократно у меня замедляется передвижение линии.
Как я понял надо значения двухмерного массива записать в объект Qpixmap и потом вывести в paintEvent() не используя циклы с помощью drawPixmap().
Ксожалению запись двухмерного массива записать в объект Qpixmap я не нашёл в сети примера. Все примеры только чтобы вывести бинарный файл.
Я не могу передавать файл, так как в двухмерном массиве храниться информация из разных файлов. А результирующий файл создавать нельзя.

Скажите пожалуйста, как запись двухмерного массива записать в объект Qpixmap?
zuze
Задачу решил. Но проблему мою это не сняло.

Сделал так

QPixmap l::DrawOnPixmap()
{
    QPixmap pixmap(720, 492);
    QPainter Tochka(&pixmap);
    for (int j = 0; j < 720; j++)
    {
        for (int i = 0; i < 492; i++)
        {
            Tochka.setPen(QColor(buffer[i][j], buffer[i][j], buffer[i][j], 127)); // Задание цвета
            Tochka.drawPoint(j, 492-i);    // Рисуем точку
        }
    }
   return pixmap;
}


Я смог избавиться от циклов в paintEvent(), но к сожалению таймер линии всё равно медленно, работает. Как-то странно когда работает только таймер линии, то он работает прекрасно. Если я запускаю меняющиеся картинки используя второй таймер, то таймер линии медленнее работает.

Почему может такое происходить ещё?
Алексей1153
zuze, ты бы демонстрации приклеивал, сложно твои объяснения вот так воспринимать под ночь ))

попробуй копировать методами

bool loadFromData ( const uchar * data, uint len, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor )
bool loadFromData ( const QByteArray & data, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor )
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.