Russian Qt Forum
Июнь 16, 2024, 05:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Построение графиков  (Прочитано 14350 раз)
ieroglif
Гость
« Ответ #15 : Апрель 03, 2010, 15:55 »

извини, ломает разбираться с твоим кодом.

Код:
void MyDrawWidget::paintEvent(QPaintEvent *) {
  QMap<int, QVector<QPoint> > graphs; //думаю, ты догадаешься как сделать этот массив глобальным ;)
  QPainter painter(this);
  painter.setWindow( this->minX, this->maxY, (this->maxX - this->minX), (this->maxY - this->minY) ); //замечательная функция - позволяет задавать свои собственные координаты рисования. перевод координат из "собственных" в "экранно-оконные" берёт на себя Qt.
  DrawGrid(&painter); //надеюсь что сетку ты тоже сможешь сам нарисовать ;)
  if ( graphs.count() > 0 ) {
    QMap<int, QVector<QPoint> >::const_iterator i = graphs.constBegin();
    while ( i != graphs.constEnd() ) {
      painter.drawLines( i.value() ); //да да.. рисует линию по массиву точек..
      i++;
    }
  }
}

ну что после этого остаётся? =) ну разве что поизвращаться с кешированием "отрисованного" графика (дабы потом не отрисовывать ещё раз)... ну уж точно не извращаться с придумыванием своего класса для координаты точки и хранения этих координат в массиве Подмигивающий
Записан
daimon
Гость
« Ответ #16 : Апрель 03, 2010, 16:06 »

Я решил - в перегрузку = Data добавил всё для мин макс
Записан
daimon
Гость
« Ответ #17 : Апрель 03, 2010, 16:08 »

QMap больше памяти жрёт чем вектор
Записан
ieroglif
Гость
« Ответ #18 : Апрель 03, 2010, 16:27 »

ты меня извини, конечно, но напиши для начала что-то работающее, а потом уже разбирайся с быстродействием/памятью Подмигивающий
Записан
daimon
Гость
« Ответ #19 : Апрель 03, 2010, 18:37 »

vector<int> лучше, чем QMap<int,int>
Записан
daimon
Гость
« Ответ #20 : Апрель 05, 2010, 22:12 »

Что лучше каждый раз перерисовывать pixmap и его рисовать или нарисовать один pixmap и его трансформировать (сохраняя пропорции)? img=pixmap.scaled(size().width(),size().height(),Qt::KeepAspectRatio,Qt::SmoothTransformation);

Можна как-то уменьшить уровень сглаживания?

Проблема- трансформируя средствами Qt - или слишком топорно или слишком сглажено, почему нельзя получить такой pixmap, который изначально рисует painter

По моему мнению трансформацией можна оптимизировать отрисовку максимально - 10000 точек - без тормозов при изменении размера окна, что не скажешь про постоянную отрисовку QPainter (все оси, кривые, подписи)
« Последнее редактирование: Апрель 05, 2010, 22:18 от daimon » Записан
daimon
Гость
« Ответ #21 : Апрель 06, 2010, 21:20 »

Есть ли возможность залить QPixmap прозрачным фоном
Записан
dnc2rt
Гость
« Ответ #22 : Апрель 07, 2010, 07:33 »

Прочитай QPixmap в нем про alpha канал рассказано.
Записан
ieroglif
Гость
« Ответ #23 : Апрель 07, 2010, 10:27 »

daimon, ты уже написал что-то работающее? если ещё нет - в хелпе есть абсолютно всё, что тебе надо - прекрати напрягать вопросами, ответы на которые нормальный программист пойдёт читать в хелп. если уже да и размышляешь над архитектурой приложения, быстродействием и оптимизацией - то велкам. расскажи что у тебя есть сейчас и что тебя в этом не устраивает (и где тормозной момент - его то мы тоже не телепаты угадывать).
Записан
daimon
Гость
« Ответ #24 : Апрель 07, 2010, 20:56 »

Тормозной момент только один - перерисовка всего QPixmap при изменении размера окна - при любом коде(при 10 точках летает, 10000-тормоза). Так вопрос у меня один - что-то есть толковое для такого (алгоритм)
« Последнее редактирование: Апрель 07, 2010, 20:58 от daimon » Записан
ieroglif
Гость
« Ответ #25 : Апрель 08, 2010, 17:21 »

а зачем перерисовывать всё? перерисовывай только то, что попадает в отображаемый  регион
ну и вообще - 10к точек всегда будут отрисовываться медленнее 10и.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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