Рисование от точки к точке Линии динамически с использованием холста - PullRequest
0 голосов
/ 24 марта 2019

Я пытаюсь создать простое графическое приложение, в котором я могу динамически создавать различные фигуры, такие как (прямоугольники, круги, треугольники), а также линии (из одной точки в другую).Для первых 3 у меня не было никаких проблем вообще.Для прямоугольника я только что определил компонент Rectangle и создал его с помощью компонента create внутри обработчика onClicked MouseArea для моей области рисования.Для треугольника я работал с canvas, чтобы нарисовать треугольник, и создал компонент также с помощью компонента create и с помощью обработчика onClicked.Я в основном передавал mouse.x и mouse.y, чтобы создавать фигуры там, где я хотел.Теперь для Линии я бы хотел определить начальную точку при щелчке мышиной области и конечную точку после освобождения.Как только он будет выпущен, я хочу нарисовать линию (используя холст).Как мне это сделать?

Для справки я добавил скриншот того, как я создал свои другие предметы: creating the objects

drawing the triangle

1 Ответ

1 голос
/ 25 марта 2019

MouseArea также имеет сигнал released. Когда ваш selectedIndex говорит "line", сохраните x и y в обработчике onPressed и создайте только строку в обработчике onReleased, используя сохраненную позицию

MouseArea {

    property var startPoint
    onPressed: { 
        if(selectedShape.currentIndex === 3) 
            startPoint = Qt.point(mouse.x, mouse.y) 
    }

    onReleased: {
        if(selectedShape.currentIndex === 3 && startPoint !== undefined)
        {
            createLine(startPoint, Qt.point(mouse.x, mouse.y) //your function goes here
        }
        startPoint = undefined        
    }
}

PS. не вставляйте код как изображения!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...