Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Manipulation event on canvas
- private void Canvas1_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
- {
- Canvas CSender = (Canvas)sender;
- ScaleTransform scale = (ScaleTransform)CSender.RenderTransform;
- if ((e.DeltaManipulation.Translation.X != 0 || e.DeltaManipulation.Translation.Y != 0) && (scale.ScaleX != 1 || scale.ScaleY != 1))
- {
- scale.CenterX -= e.DeltaManipulation.Translation.X;
- scale.CenterY -= e.DeltaManipulation.Translation.Y;
- }
- else if (e.DeltaManipulation.Scale.X != 0 || e.DeltaManipulation.Scale.Y != 0)
- {
- double factor = (e.DeltaManipulation.Scale.X >= e.DeltaManipulation.Scale.Y) ? e.DeltaManipulation.Scale.X : e.DeltaManipulation.Scale.Y;
- if (e.CumulativeManipulation.Scale.X == 1 && e.CumulativeManipulation.Scale.Y == 1)
- {
- scale.CenterX -= e.DeltaManipulation.Translation.X;
- scale.CenterY -= e.DeltaManipulation.Translation.Y;
- }
- if (scale.ScaleX * factor <= MIN_ZOOM || scale.ScaleY * factor <= MIN_ZOOM)
- {
- scale.ScaleX = MIN_ZOOM;
- scale.ScaleY = MIN_ZOOM;
- foreach (Rectangles R in RectanglesList)
- {
- R.X = R.X* scale.ScaleX;
- R.Y = R.Y* scale.ScaleY;
- }
- }
- else if (scale.ScaleX * factor >= MAX_ZOOM || scale.ScaleY * factor >= MAX_ZOOM)
- {
- scale.ScaleX = MAX_ZOOM;
- scale.ScaleY = MAX_ZOOM;
- foreach (Rectangles R in RectanglesList)
- {
- R.X = R.X * scale.ScaleX;
- R.Y = R.Y * scale.ScaleY;
- }
- }
- else
- {
- scale.ScaleX *= factor;
- scale.ScaleY *= factor;
- foreach (Rectangles R in RectanglesList)
- {
- R.X = R.X * scale.ScaleX;
- R.Y = R.Y * scale.ScaleY;
- }
- }
- }
Add Comment
Please, Sign In to add comment