crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Как присвоить значение двухмерного массива объекту Qpixmap, Не нашёл примера в сети
zuze
  опции профиля:
сообщение 15.1.2013, 12:49
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 211
Регистрация: 4.11.2012
Пользователь №: 3589

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




Репутация:   0  


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

Скажите пожалуйста, как запись двухмерного массива записать в объект Qpixmap?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zuze
  опции профиля:
сообщение 15.1.2013, 15:20
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 211
Регистрация: 4.11.2012
Пользователь №: 3589

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




Репутация:   0  


Задачу решил. Но проблему мою это не сняло.

Сделал так

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(), но к сожалению таймер линии всё равно медленно, работает. Как-то странно когда работает только таймер линии, то он работает прекрасно. Если я запускаю меняющиеся картинки используя второй таймер, то таймер линии медленнее работает.

Почему может такое происходить ещё?

Сообщение отредактировал zuze - 15.1.2013, 16:04
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 15.1.2013, 20:03
Сообщение #3


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


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 )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




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