Посоветуйте элемент управления для прокрутки изображения на форме
Добавлено: 13 июл 2008, 11:47
Приветствую всех!
Суть задачи:
Надо отобразить на форме карту города, а поверх этой карты накладывать схему сети связи (рисовать линии разной толщины и квадратики).
Все необходимые данные (координаты) хранятся и расчитываются средствами VBA Excel.
Проблема: нужен скроллинг карты (она немаленькая, и на форму вся сразу ну никак не поместится). Как минимум - линейками прокрутки, как максимум - методом Drag&Drop плюс масштабирование колёсиком мыши.
Причём после щелчка мышью на карте нужно получать координаты относительно карты, а не формы. (ну это уже мелочи, это уже в любом случае можно вычислить)
Никак не могу найти подходящий элемент управления для отображения.
В стандартный контейнер типа Label или Image картинку засунуть-то можно, но как двигать картинку относительно контейнера - не понимаю. (нет там свойств вроде Picture.Top, а множество значений свойства Picture.Position ограничено константами)
В CorelDRAW всё подобное я делал без проблем (средствами VBA), там и масштабирование, и всё остальное, что только может понадобиться. Но вставлять на форму OLE-контейнер с файлом Corel как-то не хочется (цеплять к проекту 10-метровые библиотеки, или требовать от юзеров установки Corel-a - не лучшее решение), да и Excel начнёт тормозить...
Может, кто встречал такой контейнер для рисунков?
(необходимо, чтоб этот элемент управления выдавал координаты по событию Click - типа ByVal X As Single, ByVal Y As Single, и, главное, позволял двигать изображение внутри рамки)
Есть, конечно, другой вариант - положить карту прямо на лист Excel, и рисовать полоски тоже Excel-евскими Shape-ами,
так даже удобнее отслеживать события щелчков по Shape-ам, но Excel достаточно медленно отрисовывает большую карту (расположенную на листе) при масштабировании и прокрутке (увеличить производительность всех компов не получится), да и на форме это выглядит как-то поприличнее...
Суть задачи:
Надо отобразить на форме карту города, а поверх этой карты накладывать схему сети связи (рисовать линии разной толщины и квадратики).
Все необходимые данные (координаты) хранятся и расчитываются средствами VBA Excel.
Проблема: нужен скроллинг карты (она немаленькая, и на форму вся сразу ну никак не поместится). Как минимум - линейками прокрутки, как максимум - методом Drag&Drop плюс масштабирование колёсиком мыши.
Причём после щелчка мышью на карте нужно получать координаты относительно карты, а не формы. (ну это уже мелочи, это уже в любом случае можно вычислить)
Никак не могу найти подходящий элемент управления для отображения.
В стандартный контейнер типа Label или Image картинку засунуть-то можно, но как двигать картинку относительно контейнера - не понимаю. (нет там свойств вроде Picture.Top, а множество значений свойства Picture.Position ограничено константами)
В CorelDRAW всё подобное я делал без проблем (средствами VBA), там и масштабирование, и всё остальное, что только может понадобиться. Но вставлять на форму OLE-контейнер с файлом Corel как-то не хочется (цеплять к проекту 10-метровые библиотеки, или требовать от юзеров установки Corel-a - не лучшее решение), да и Excel начнёт тормозить...
Может, кто встречал такой контейнер для рисунков?
(необходимо, чтоб этот элемент управления выдавал координаты по событию Click - типа ByVal X As Single, ByVal Y As Single, и, главное, позволял двигать изображение внутри рамки)
Есть, конечно, другой вариант - положить карту прямо на лист Excel, и рисовать полоски тоже Excel-евскими Shape-ами,
так даже удобнее отслеживать события щелчков по Shape-ам, но Excel достаточно медленно отрисовывает большую карту (расположенную на листе) при масштабировании и прокрутке (увеличить производительность всех компов не получится), да и на форме это выглядит как-то поприличнее...