Добавление формы в точке наведения мыши на холсте WPF

У меня есть холст с масштабированием (ScaleTransform). Теперь я масштабировал холст на некоторое произвольное значение масштабирования. Я добавляю RectangleGeomtry в точке MouseDown при каждом событии MouseDown. Но странно то, что форма добавляется на холст с некоторыми +/-dx и +/-dy к точке MouseDown.

Любые выводы о том, почему это происходит, очень ценятся.


person Sam    schedule 13.12.2011    source источник


Ответы (2)


На масштабированном холсте вы должны получить обратное преобразование (Масштабирование и перемещение) точки, а затем применить преобразование (Масштабирование и перемещение) после построения геометрии. Это сработало. Я не уверен, что это лучший способ.

person Sam    schedule 14.12.2011

Когда вы применяете масштабное преобразование, все точки трансформируются (перемещаются). Например, если у вас есть точка A(10,20) и вы применяете масштаб 2 к изображению, ваша точка A теперь будет A(20,40). Когда вы хотите добавить точку к масштабированному изображению, вы должны настроить координаты так... (умножить на масштаб)

person Rayden    schedule 13.12.2011
comment
Нет, не надо умножать. В масштабированном холсте вы должны получить обратное преобразование (Масштабирование и перемещение) точки и применить преобразование (Масштабирование и перемещение) после построения геометрии. Это сработало. Я не уверен, что это лучший способ. - person Sam; 13.12.2011