Я делаю программу в wxWidgets, которая имеет аналогичную функциональность, скажем, MS Paint, но для более конкретных целей.
Я понимаю различные способы создания объекта пера/карандаша, который фиксирует один пиксель, когда вы перетаскиваете мышь. У меня возникли проблемы с визуализацией некоторых других распространенных инструментов: прямоугольник, овал, линия и т. д. Для них вы нажимаете левую кнопку мыши, чтобы установить исходную точку, и когда вы перетаскиваете мышь вокруг нее, временно отображается наложение фигуры на холст от начала координат до текущей позиции мыши, окончательно фиксируя фигуру на изображении при отпускании кнопки мыши.
Как лучше организовать этот процесс? Единственное решение, которое я могу придумать, - это сохранить исходную точку при наведении мыши и при перетаскивании мыши установить временную переменную в текущую позицию мыши. Каждый раз, когда положение мыши изменяется, вы аннулируете прямоугольник от исходной точки до сохраненного положения мыши. Как только кнопка мыши будет отпущена, форма будет привязана к модели изображения.
Я еще не реализовал это, так как сначала хотел бы получить обратную связь. Является ли это оптимальным решением или оно может вызвать видимое мерцание, при этом доступно гораздо более предпочтительное решение?