crossplatform.ru

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

> Вопрос по функции drawText
AD
  опции профиля:
сообщение 28.7.2009, 14:42
Сообщение #1


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

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


У объекта painter есть функция отрисовки текста. Каким образом можно заставить ее затирать прежнее значение? При отрисовке значения пересечения визира с графиков значение выводится несколько(а то и несколько сот) раз, из-за чего в итоге не разобрать значения.
И опять же сдвиг точки, что не радует.... :(
[attachment=724:test1.JPG]
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
ufna
  опции профиля:
сообщение 28.7.2009, 15:22
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

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




Репутация:   5  


нужно рисовать в риал-тайме и делать апдейт регионов, где рисовал при перерисовке.

покажи код как рисуешь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 28.7.2009, 15:32
Сообщение #3


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

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Цитата(ufna @ 28.7.2009, 16:22) *
нужно рисовать в риал-тайме и делать апдейт регионов, где рисовал при перерисовке.

покажи код как рисуешь.

:) Ну реальное время в данном контексте немного странно звучит. Конечно, перерисовку делаю.
/// Отрисовка графика
void GraphicDisplay::paintEvent(QPaintEvent* events)
{
    painter.begin(this);

    painter.setWindow(paramsDisplay -> rect());
    painter.setFont(QFont("Tahoma", 8, Qt::SolidLine));
    painter.setPen(Qt::black);

    drawGrid(&painter);
    drawCurves(&painter);

    painter.end();
}

/// Отрисовка графика
void GraphicDisplay::drawCurves(QPainter* painter)
{
// .....
                    painter -> drawLine(polyline.last(), pnt),
                    viewCoordViewfinder(painter, data, j, pnt);
// ......
}

/// Отображение координат пересечения с визиром
void GraphicDisplay::viewCoordViewfinder(QPainter* painter, const QVector<SpecPointF>& data, int index,
                                        const QPointF& pnt)
{
    if(!v_viewfinderAction -> isChecked() && !h_viewfinderAction -> isChecked())
        return;
    double graphic_x = data[index].x(), graphic_y = data[index].y();
    foreach(VFFrame* pf, viewfinderList)
    {
        int frame_x = pf -> x(), frame_y = pf -> y();
        double graph_x = pnt.x(), graph_y = pnt.y();
        if(pf -> frameShape() == QFrame::VLine && v_viewfinderAction -> isChecked())
            if(fabs(frame_x - graph_x) <= 3.)
            {
                QPointF coord(pnt.x() + 40., pnt.y() - 1.);
                QPen oldPen(painter -> pen());
                painter -> setPen(Qt::black);
                painter -> setBrush(oldPen.color());
                QRect cycle_rect(QPoint(pnt.x() - 1, pnt.y() - 1),
                                 QPoint(pnt.x() + 1, pnt.y() + 1));
                painter -> drawEllipse(cycle_rect);
                painter -> drawText(coord, QString::number(graphic_y));
                painter -> setPen(oldPen);
            }
        // ..................
    }    
}


Сообщение отредактировал AD - 28.7.2009, 15:33
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 28.7.2009, 17:15
Сообщение #4


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

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Пока ничего не помогло. filRect - не помог.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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




RSS Текстовая версия Сейчас: 18.1.2025, 12:02