protected override void StartMove(Selection sel) { Drawable drawable = null; SelectionPosition pos = SelectionPosition.BottomRight; bool resize = true, copycolor = true, sele = true; if (Tool == DrawTool.Selection) { if (Selections.Count == 0 && currentZoom != 1) { widget.SetCursorForTool(DrawTool.Move); inZooming = true; } return; } if (sel != null) { ClearSelection(); } switch (Tool) { case DrawTool.Line: drawable = new Line(MoveStart, new Point(MoveStart.X + 1, MoveStart.Y + 1), LineType, LineStyle); drawable.FillColor = Color; pos = SelectionPosition.LineStop; break; case DrawTool.Cross: drawable = new Cross(MoveStart, new Point(MoveStart.X + 1, MoveStart.Y + 1), LineStyle); break; case DrawTool.Ellipse: drawable = new Ellipse(MoveStart, 2, 2); break; case DrawTool.Rectangle: drawable = new Rectangle(MoveStart, 2, 2); break; case DrawTool.CircleArea: drawable = new Ellipse(MoveStart, 2, 2); drawable.FillColor = Color.Copy(); drawable.FillColor.A = byte.MaxValue / 2; break; case DrawTool.RectangleArea: drawable = new Rectangle(MoveStart, 2, 2); drawable.FillColor = Color.Copy(); drawable.FillColor.A = byte.MaxValue / 2; break; case DrawTool.Counter: drawable = new Counter(MoveStart, 3 * LineWidth, 0); drawable.FillColor = Color.Copy(); (drawable as Counter).TextColor = Color.Grey2; resize = false; break; case DrawTool.Text: case DrawTool.Player: { int width, heigth; Text text = new Text(MoveStart, 1, 1, ""); if (ConfigureObjectEvent != null) { ConfigureObjectEvent(text, Tool); } if (text.Value == null) { return; } Config.DrawingToolkit.MeasureText(text.Value, out width, out heigth, Config.Style.Font, FontSize, FontWeight.Normal); text.Update(new Point(MoveStart.X - width / 2, MoveStart.Y - heigth / 2), width, heigth); text.TextColor = TextColor.Copy(); text.FillColor = text.StrokeColor = TextBackgroundColor.Copy(); text.TextSize = FontSize; resize = copycolor = sele = false; drawable = text; break; } case DrawTool.Pen: case DrawTool.Eraser: handdrawing = true; break; case DrawTool.Zoom: { double newZoom = currentZoom; if (modifier == ButtonModifier.Shift) { newZoom -= 0.1; } else { newZoom += 0.1; } newZoom = Math.Max(newZoom, MinZoom); newZoom = Math.Min(newZoom, MaxZoom); Zoom(newZoom, MoveStart); break; } } if (drawable != null) { if (copycolor) { drawable.StrokeColor = Color.Copy(); } drawable.LineWidth = LineWidth; drawable.Style = LineStyle; var selo = Add(drawable); drawing.Drawables.Add(drawable); if (Tool == DrawTool.Counter) { UpdateCounters(); } if (sele) { if (resize) { UpdateSelection(new Selection(selo, pos, 5)); } else { UpdateSelection(new Selection(selo, SelectionPosition.All, 5)); } inObjectCreation = true; } widget.ReDraw(); } }