private void RenderCanvas_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { Input.MousePosition = e.Location; bool updateSurface = false; if (Input.IsDrag) { double deltaPixel = e.X - Input.DragPosition.X; double deltaUnit = scroll.PixelToUnitLength(deltaPixel); scroll.ViewUnit.Left -= deltaUnit; scroll.ViewUnit.Normalize(); UpdateBar(); updateSurface = true; Input.DragPosition = e.Location; } else if (Input.IsMeasure) { Input.MeasureInterval.Finish = scroll.PixelToTime(e.X).Start; updateSurface = true; } else { ThreadRow row = GetRow(e.Y); if (row != null) { row.OnMouseMove(new Point(e.X, e.Y - row.Offset), scroll); } updateSurface = true; } if (updateSurface) { UpdateSurface(); } }
private void RenderCanvas_MouseWheel(object sender, System.Windows.Forms.MouseEventArgs e) { if (e.Delta != 0) { double delta = e.Delta * ZoomSpeed; double scale = delta > 0.0 ? 1 / delta : -delta; double ratio = (double)e.X / surface.RenderCanvas.Width; double prevWidth = scroll.ViewUnit.Width; scroll.ViewUnit.Width *= scale; scroll.ViewUnit.Left += (prevWidth - scroll.ViewUnit.Width) * ratio; scroll.ViewUnit.Normalize(); ThreadRow row = GetRow(e.Y); if (row != null) { row.OnMouseMove(new Point(e.X, e.Y - row.Offset), scroll); } UpdateBar(); UpdateSurface(); } }