All pastes #962137 Raw Edit

Something

public text v1 · immutable
#962137 ·published 2008-03-29 15:00 UTC
rendered paste body
    <Grid Name="grid" Background="Transparent" MouseMove="Grid_MouseMove" MouseWheel="grid_MouseWheel">
		<Canvas Name="canvas">
			<Button Canvas.Left="100" Canvas.Top="100" Content="Hello, World!" />
		</Canvas>
    </Grid>



	public partial class Window1 : Window
	{
		private double zoom = 1.0;

		public Window1()
		{
			InitializeComponent();
		}

		private void Grid_MouseMove(object sender, MouseEventArgs e)
		{
			ApplyZoom(e);
		}

		private void grid_MouseWheel(object sender, MouseWheelEventArgs e)
		{
			int delta = e.Delta / 120;
			if (delta > 0)
				zoom *= 1.1;
			else
				zoom /= 1.1;
			ApplyZoom(e);
		}

		private void ApplyZoom(MouseEventArgs e)
		{
			Point p = e.GetPosition(grid);
			ScaleTransform scaleTransform = new ScaleTransform(zoom, zoom, p.X, p.Y);

			canvas.RenderTransform = scaleTransform;
		}

	}