Реализация Drag / Size Handle - PullRequest
       28

Реализация Drag / Size Handle

0 голосов
/ 06 апреля 2009

Я ищу реализации или объяснения дескриптора перетаскивания / размера.

Возможно, я использую неправильную номенклатуру, но я имею в виду «ручки», которые появляются вокруг объекта (в основном в программах рисования), когда вы выбираете его и хотите выполнить операцию с этим объектом, такую ​​как поворот, размер, масштаб и т.д ...

Может ли кто-нибудь указать мне на реализацию OSS, на которую я могу посмотреть или объяснить, как они это реализовали?

1 Ответ

0 голосов
/ 06 апреля 2009

В Windows это действительно не функция ОС ... это то, что вы сами кодируете.

По сути, вы создаете массив прямоугольников, в которых должны появляться маркеры. Ваша цель здесь двоякая, первая для простого рисования дескрипторов, вторая для передачи вызова PointInRectangle.

Бит вызова PointInRectangle выполняется во время событий MouseMove. По сути, именно здесь вы решаете, исходя из текущего местоположения мыши, какой курсор должен иметь курсор мыши (он же «в каком режиме» находится мышь).

Другие хитрые биты обрабатывают мышь вниз и определяют, пора ли начинать перетаскивание, перемещают ли мышь при перетаскивании и поднимают ли мышь до конца перемещения.

В целом это может быть куча работы. Ох .. и не забывайте, что вам может понадобиться прокрутить панель / окно рисования при перетаскивании возле краев.

В зависимости от того, что вы делаете, вы, возможно, захотите взглянуть на http://www.lassalle.com/. У них есть отличный недорогой инструмент для построения графиков (не диаграмм).

...