crossplatform.ru

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

> Полилиния, Правильное выделении полилинии
KontAr
  опции профиля:
сообщение 12.12.2011, 17:47
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 12.12.2011
Пользователь №: 3061

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




Репутация:   1  


Всем привет. Вопрос вот в чем, есть у меня полилиния, наследник от QGraphicsItem. В ее основе вектор точек. Линию за узлы тянут маркеры (тоже наследники QGraphicsItem). а прежде, чем тянуть, нужно выделить. Вот тут проблема: толщина линии 3, RoundCap и RoundJoin. Как сделать так, чтобы щелчки ловились точно на линии? Функция shape? у меня сейчас так:
Раскрывающийся текст

    QPainterPath shapeLine(QPointF p1, QPointF p2) const
    {
        QPolygonF     pol,  pol2;
        QPainterPath path, path2;
        float delta = 2; //дополнительная область вокруг линии

        pol << QPointF(p1 + QPointF(-delta, -delta)) //1p1
            << QPointF(p2 + QPointF(-delta, -delta)) //1p2
            << QPointF(p2 + QPointF( delta,  delta)) //3p2
            << QPointF(p1 + QPointF( delta,  delta));//3p1

        pol2<< QPointF(p1 + QPointF( delta, -delta)) //4p1
            << QPointF(p2 + QPointF( delta, -delta)) //4p2
            << QPointF(p2 + QPointF(-delta,  delta)) //2p2
            << QPointF(p1 + QPointF(-delta,  delta));//2p1

        //path.setFillRule(Qt::WindingFill);
        path.addPolygon(pol);
        path2.addPolygon(pol2);
        return path.united(path2);
    }

    QPainterPath shape() const
    {
        QPainterPath painterPath;

        for(int i = 0; i < points.count() - 1; i++)
        {
            painterPath.addPath(shapeLine(points[i], points[i + 1]));
        }

        return painterPath;
    }



Получается не гут, области на которых выделяется, сильно зависят от угла секции полилинии, а последняя секция вобще ловит щелчки. Что делать не знаю :unknw:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
KontAr
  опции профиля:
сообщение 13.12.2011, 17:49
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 12.12.2011
Пользователь №: 3061

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




Репутация:   1  


Я был очень близко к решению, но прошел мимо... Спасибо, помогло
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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




RSS Текстовая версия Сейчас: 30.11.2024, 1:26