Good day !
I read svg , in the role of ZoomableCanvas canvas ZoomableCanvas create Shape (Path, ellipse, rectangle и т.д.). elements Shape (Path, ellipse, rectangle и т.д.). Everything is normal, in general I receive the image one to one. Next, I need to change the geometry of some of the points in this picture, for this I created my own Adorner for each of the Shape objects. It all rested at such a moment as the image was enlarged:
private void OnPreviewMouseWheelCanvas(object sender, MouseWheelEventArgs e) { var x = Math.Pow(2, e.Delta / 10.0 / Mouse.MouseWheelDeltaForOneLine); if (e.Delta > 0) { if ((sender as ZoomableCanvas).Scale <= 34.29) { (sender as ZoomableCanvas).Scale *= x; SetScaleToLabel((float)(sender as ZoomableCanvas).Scale * 100); var position = (Vector)e.GetPosition(theGrid); (sender as ZoomableCanvas).Offset = (Point)((Vector)((sender as ZoomableCanvas).Offset + position) * x - position); } } else { (sender as ZoomableCanvas).Scale *= x; SetScaleToLabel((float)(sender as ZoomableCanvas).Scale * 100); var position = (Vector)e.GetPosition(theGrid); (sender as ZoomableCanvas).Offset = (Point)((Vector)((sender as ZoomableCanvas).Offset + position) * x - position); } e.Handled = true; } or decreasing it. Along with this increase all Thumb , located on the Adorner layer. How to make, that all Thumb which are on points when zaming, did not change the size? At the moment it turns out like this:
public override GeneralTransform GetDesiredTransform(GeneralTransform transform) { return base.GetDesiredTransform(transform); } protected override Size MeasureOverride(Size constraint) { var result = base.MeasureOverride(constraint); InvalidateVisual(); return result; } protected override Size ArrangeOverride(Size finalSize) { return finalSize; }