private void toolStripButtonZoomtoFeature_Click(object sender, EventArgs e) { Rectangle2D bb = CurrImage.BoundingBox(); double imageSize = Math.Max(bb.Width, bb.Height); if (imageSize > 0.0) { double screenSize = Math.Min(renderPanel.Width, renderPanel.Height); renderContext.DrawScale = (screenSize / imageSize) / 1.2; } else { renderContext.DrawScale = 1.0; } Vector2D displaySize = new Vector2D((renderPanel.Width / renderContext.DrawScale), (renderPanel.Height / renderContext.DrawScale)); Vector2D center = bb.MidPoint - (displaySize / 2.0f); renderContext.Location.x = -center.x * renderContext.DrawScale; renderContext.Location.y = -center.y * renderContext.DrawScale; renderPanel.Render(); }
private void panel1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { dragLocation = new Point(e.X, e.Y); dragMouseLock = true; } if (e.Button == MouseButtons.Left) { Vector2D loc = renderContext.ScreenToPoint(e.X, e.Y); Vector2D snappedLoc = loc; if (snapToGridPermanentButton.Checked) { snappedLoc = renderContext.GridSnap(loc); } switch (editAction) { case EditAction.ActionMovePoints: { List <Primitive2D> prims = CurrImage.GetPrimitivesAtLocation(loc, 4.0f / renderContext.DrawScale); if (prims.Count == 0) { if (!multiselect) { mouseWasMovedAfterClick = false; } } else { mouseWasMovedAfterClick = true; if (!multiselect) { selection.Clear(); selection.Add(prims[0]); } else { selection.TogglePrimitive(prims[0]); } } break; } case EditAction.ActionAddPoints: { CurrImage.primitives.Add(new Vector2D(snappedLoc)); break; } case EditAction.ActionAddLines: { if (linkObject != null) { ObjectLinker.EndLinkingObjects(CurrImage.GetLinkablePrimitives(), loc, linkObject); linkObject = null; renderPanel.Render(); return; } else { linkObject = ObjectLinker.StartLinkingObjects(CurrImage.GetLinkablePrimitives(), loc); if (linkObject != null) { renderPanel.Render(); return; } } VectorCloud2D dots = CurrImage.GetPointsAtLoction(loc, 4.0f / renderContext.DrawScale); Vector2D dot; if (dots.Count == 0) { dot = new Vector2D(snappedLoc); CurrImage.primitives.Add(dot); } else { dot = dots[0]; } if (lineStartPoint != null) { // Line is ready, connect! CurrImage.primitives.Add(new Line2D(lineStartPoint, dot)); lineStartPoint = null; } else { // First dot, draw dummy line lineStartPoint = dot; } break; } } } renderPanel.Render(); }