Russian Qt Forum
Ноябрь 24, 2024, 09:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Рисование карандашом (без разрывов в линии)  (Прочитано 3251 раз)
kilanoff
Гость
« : Февраль 12, 2011, 14:28 »

Есть такая проблема, есть виджет на котором рисую мышкой, как карандашом. есть одна проблема, не получается сделать рисование не разрывной линией, т.е. получается вот так:

http://pic2net.ru/view/?v=29341a414b16ffc4b27228b8b7572aa7.jpg

а надо вот так:

http://pic2net.ru/view/?v=c31df2b3339c7ef0e84777059b7af9b5.jpg

как такое можно реализовать ? именно как рисование карандашом как в фотошопе или паинте сделать ? без разрывов
Записан
BRE
Гость
« Ответ #1 : Февраль 12, 2011, 14:57 »

как такое можно реализовать ? именно как рисование карандашом как в фотошопе или паинте сделать ? без разрывов
Самому достраивать линии между этими точками.
Записан
kilanoff
Гость
« Ответ #2 : Февраль 13, 2011, 14:37 »

спасибо, получилось
Код:
bool MyScreenShot::eventFilter(QObject *obj, QEvent *event)
{
    QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);

    if (event->type()==QEvent::MouseButtonPress)
    {
        start_paint = true;

        curX = startX = mouseEvent->pos().x();
        curY = startY = mouseEvent->pos().y();
    }

    if (event->type()==QEvent::MouseButtonRelease && start_paint)
    {
        start_paint = false;

        endX = mouseEvent->pos().x();
        endY = mouseEvent->pos().y();
    }

    if (event->type()==QEvent::MouseMove && start_paint)
    {
        endX = mouseEvent->pos().x();
        endY = mouseEvent->pos().y();

        QPainter p1( &theImage );
        p1.setPen(QPen(Qt::black, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
        p1.setBrush(Qt::yellow);
        p1.drawLine(curX,curY,endX,endY);
        p1.end();

        update();
        repaint();

        curX = mouseEvent->pos().x();
        curY = mouseEvent->pos().y();
    }

    return false;
}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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