Как перевести координаты мыши в мировые координаты с помощью GDI +? Или получить рамки (или даже лучше) старых областей skool для SVG-фигур, нарисованных с использованием GDI +?
В любом случае. Я искал SVG-код и нашел:
http://development.mwcs.de/svgimage.html
Это первый компонент Delphi, который фактически работает для SVG, но я отвлекаюсь.
Этот компонент использует GDI + для отображения кругов, кривых и т.д.
GDI + использует матрицы для преобразования координат мира, поворотов и искажений в координаты экрана.
Эта часть я понимаю. Вы используете матричное умножение для перевода.
Проблема в этом
Если я наведите указатель мыши на закрытую форму:
- Где я могу получить матрицу, которая переведет мою точку экрана моей мыши в точку мира, в которой я могу попасть в круг, который я вижу на экране?
На всех этих объектах GDI существует множество матриц. - Пожалуйста, не рассказывайте мне о рисовании в растровое изображение и тестировании магических цветов под курсором, это не то, что я ищу.
- Если существует цепочка матриц, как мне пересечь их в правильном (инвертированном?) порядке, чтобы моя координата экрана правильно направлялась к мировой координате?
Другими словами
Формы, которые считываются из SVG-изображения, являются примитивами, которые искажаются матрицами в координатах экрана.
Как сделать обратную сторону от координаты экрана в координатах, которые я могу использовать, чтобы увидеть, находится ли я внутри формы или нет.
обратите внимание
Мне нужно знать, в какой форме я нахожусь.
Из-за того, как настроено изображение SVG, каждая форма имеет идентификатор, и я хочу использовать это, чтобы увидеть, в какой области я попал с помощью мыши.
ИЗМЕНИТЬ
В качестве альтернативы
- Могу ли я получить ограничивающий прямоугольник для каждой фигуры в координатах экрана, чтобы я мог проверить координаты мыши на этом.
- Могу ли я получить старую область GDI, где я могу сделать PtInRegion с координатами экрана.
Надеюсь, вы поможете мне найти мой путь со всеми этими искаженными путями: -).