void AddPoint(Point pt, IBrush brush, double radius, float?pressure = null) { _points[_index] = new CanvasPoint { Point = pt, Brush = brush, Radius = radius, Pressure = pressure }; _index = (_index + 1) % _points.Length; }
/// <summary> /// Clears the state maintained by <see cref="LineMode"/> /// </summary> public override void Reset() { ActiveLine = null; ActiveVertex = null; Marker = null; base.Reset(); }
public void DrawBitmap(IBitmap bitmap, CanvasPoint point) { _canvas?.DrawBitmap((SKBitmap)bitmap.EngineElement, point.ToSKPoint(), new SKPaint() { FilterQuality = this.InterpolationMode.ToSKFilterQuality(), }); }
public NodeViewModel(Node node, Vector location, IControlTypesResolver controlTypesResolver) { Node = node; Title = node.Title; Location = new CanvasPoint(location); ControlTypesResolver = controlTypesResolver; foreach (var pin in node.InputPins) { AddInputPin(pin); } foreach (var pin in node.OutputPins) { AddOutputPin(pin); } node.Processed += OnNodeProcessed; node.PinsChanged += OnNodePinsChanged; _disposable = Disposable.Create(() => { node.PinsChanged -= OnNodePinsChanged; node.Processed -= OnNodeProcessed; }); }
public void DrawText(string text, IFont font, IBrush brush, CanvasPoint point, IDrawTextFormat format) { var skPoint = point.ToSKPoint(); var skPaint = GetSKPaint(font, (SKPaint)brush.EngineElement, format, ref text, ref skPoint); DrawMultilineText(text, skPoint, skPaint); }
public CanvasPoint BeginRelinkage(PinViewModel pinViewModel) { _currentUnfinishedLink = _linkViewModels.First(model => model.TargetPinViewModel == pinViewModel); _currentUnfinishedLink.TargetPinViewModel = null; var canvasPoint = new CanvasPoint(); _currentUnfinishedLink.EndPoint = canvasPoint; return(canvasPoint); }
public Vector(double _x, double _y, int xi, int yi) { SortMode = 1; X = _x; Y = _y; Alternates = new CanvasPoint { DotIndexLeft = xi, DotIndexTop = yi, ValueX = _x, ValueY = _y }; }
public void AddPoint(CanvasPoint p) { if (_path.PointCount == 0) { _startFigure = false; _path.MoveTo(p.ToSKPoint()); } else { _path.LineTo(p.ToSKPoint()); } }
public void LeftMouseDownEventHandler(CanvasPoint mouseCoordinate) { if (!ViewModelMediator.MovingMode && ViewModelMediator.SelectedShapeType == ShapeType.FreeHand) { ViewModelMediator.RaiseViewModelEvent(this, ViewModelMediator.ViewModelEvent.DrawingStarted); drawn = false; // new drawing started ShapeViewModel shapeVM = CreateShapeVM(); if (shapeVM.Shape is Polyline polyLine) { polyLine.Points.Add(new System.Windows.Point(mouseCoordinate.AbsolutePoint.X, mouseCoordinate.AbsolutePoint.Y)); } Shapes.Add(shapeVM); } }
public PinViewModel(NodeViewModel nodeViewModel, IPin pin, IControlTypesResolver controlTypesResolver) { ControlTypesResolver = controlTypesResolver; NodeViewModel = nodeViewModel; Pin = pin; Name = pin.Name; Type = pin.Type; Point = new CanvasPoint(); var changablePin = pin as INotifyPropertyChanged; if (changablePin != null) { changablePin.PropertyChanged += OnPinPropertyChanged; _disposable = Disposable.Create(() => changablePin.PropertyChanged -= OnPinPropertyChanged); } UpdateValue(); }
/// <summary> /// Moves the <see cref="ActiveVertex"/> or <see cref="Marker"/> /// </summary> public override void OnMouseMove(MouseEventArgs e, Keys modifierKeys) { base.OnMouseMove(e, modifierKeys); var location = Canvas.SnapToInterval ? e.Location.Snap(Canvas.SnapInterval) : e.Location; if (ActiveVertex != null) { ActiveVertex.MoveTo(location, modifierKeys); Marker = null; } else { if (Marker == null) { Marker = new CanvasPoint(); } Marker.MoveTo(location, modifierKeys); } Invalidate(); }
public void LeftMouseUpEventHandler(CanvasPoint mouseCoordinate) { if (!ViewModelMediator.MovingMode && ViewModelMediator.SelectedShapeType != ShapeType.FreeHand) { if (firstPoint == null) { ViewModelMediator.RaiseViewModelEvent(this, ViewModelMediator.ViewModelEvent.DrawingStarted); drawn = false; // new drawing started ShapeViewModel shapeVM = CreateShapeVM(); firstPoint = mouseCoordinate.AbsolutePoint; if (shapeVM.Shape is Line line) { line.X1 = firstPoint.X; line.Y1 = firstPoint.Y; line.X2 = firstPoint.X; line.Y2 = firstPoint.Y; Shapes.Add(shapeVM); } else { shapeVM.Shape.Width = 0; shapeVM.Shape.Height = 2; shapeVM.Shape.RenderTransform = new TranslateTransform(firstPoint.X, firstPoint.Y); Shapes.Add(shapeVM); ShapeViewModel tempLineVM = CreateShapeVM(ShapeType.Line); Line tempLine = tempLineVM.Shape as Line; tempLine.X1 = firstPoint.X; tempLine.Y1 = firstPoint.Y; tempLine.X2 = firstPoint.X; tempLine.Y2 = firstPoint.Y; Shapes.Add(tempLineVM); } } else if (secondPoint == null) { secondPoint = mouseCoordinate.AbsolutePoint; if (ViewModelMediator.SelectedShapeType == ShapeType.Line) { Shape shape = Shapes.Last().Shape; (shape as Line).X2 = secondPoint.X; (shape as Line).Y2 = secondPoint.Y; drawn = true; firstPoint = secondPoint = null; ViewModelMediator.RaiseViewModelEvent(this, ViewModelMediator.ViewModelEvent.DrawingEnded); } else { Shapes.Remove(Shapes.Last()); Shape shape = Shapes.Last().Shape; var angle = Math.Atan((secondPoint.Y - firstPoint.Y) / (secondPoint.X - firstPoint.X)); var rotate = new RotateTransform(angle * 180 / 3.14); rotate.CenterX = (firstPoint.X + secondPoint.X) / 2; rotate.CenterY = (firstPoint.Y + secondPoint.Y) / 2; shape.RenderTransform = rotate; } } else { drawn = true; firstPoint = secondPoint = null; ViewModelMediator.RaiseViewModelEvent(this, ViewModelMediator.ViewModelEvent.DrawingEnded); } } }
static public Point ToGdiPoint(this CanvasPoint canvasPoint) { return(new Point(canvasPoint.X, canvasPoint.Y)); }
private void DrawCanvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { CanvasPoint p = CoordHelper.TranslateFromMouse(CanvasWrapper.Config, e.GetPosition(drawCanvas).X, e.GetPosition(drawCanvas).Y); if (activeMode == TOOL_MODE_POINT) { EventBus.Publish(new InputPointSelected(p.DotIndexLeft, p.DotIndexTop, p.ValueX, p.ValueY)); CanvasWrapper.AddInputPoint(p.DotIndexLeft, p.DotIndexTop, p.ValueX, p.ValueY); demo.Points.Add(new Vector { X = p.ValueX, Y = p.ValueY, Alternates = new CanvasPoint { DotIndexLeft = p.DotIndexLeft, DotIndexTop = p.DotIndexTop } }); return; } if (activeMode == TOOL_MODE_LINE) { if (pointsSelected == 0) { point1_xi = p.DotIndexLeft; point1_yi = p.DotIndexTop; pointsSelected++; } else if (pointsSelected == 1) { pointsSelected++; point2_xi = p.DotIndexLeft; point2_yi = p.DotIndexTop; CompleteLine(); } } if (activeMode == TOOL_MODE_POLYGON) { if (pointsSelected == 0) { point1_xi = p.DotIndexLeft; point1_yi = p.DotIndexTop; pointsSelected++; } else if (pointsSelected == 1) { pointsSelected++; point2_xi = p.DotIndexLeft; point2_yi = p.DotIndexTop; AddPolygonLine(); } else if (pointsSelected >= 2) { pointsSelected++; // last end point becomes new start point point1_xi = point2_xi; point1_yi = point2_yi; point2_xi = p.DotIndexLeft; point2_yi = p.DotIndexTop; AddPolygonLine(); } } }
public void DrawLine(IPen pen, CanvasPoint p1, CanvasPoint p2) { CheckUsability(); _graphics.DrawLine((Pen)pen.EngineElement, p1.ToGdiPoint(), p2.ToGdiPoint()); }
public CanvasPoint BeginRelinkage(PinViewModel pinViewModel) { _currentUnfinishedLink = _linkViewModels.First(model => model.TargetPinViewModel == pinViewModel); _currentUnfinishedLink.TargetPinViewModel = null; var canvasPoint = new CanvasPoint(); _currentUnfinishedLink.EndPoint = canvasPoint; return canvasPoint; }
static public SKPoint ToSKPoint(this CanvasPoint point) { return new SKPoint(point.X, point.Y); }
private void VisualizeLogisim(LogisimConverter.LogisimModel model) { canvasControl1.RemoveAllItems(); // Comps foreach (var comp in model.comps) { CanvasRect rect = new CanvasRect((PointF)comp.loc, LogisimConverter.CompSize, LogisimConverter.CompSize, Color.Gold); rect.Text = comp.name; if (comp.name == "Text") { // Skip labels continue; } else if (comp.name == "1") { rect.FrontColor = Color.Tomato; } else if (comp.name == "0") { rect.FrontColor = Color.LimeGreen; } #if DEBUG rect.Text += " #" + comp.id.ToString(); #endif canvasControl1.AddItem(rect); } // Wires foreach (var wire in model.wires) { List <PointF> path = new List <PointF>(); foreach (var p in wire.path) { path.Add(p); } CanvasPolyLine line = new CanvasPolyLine(path, 1, Color.Black); line.Text = wire.name; WireMeta meta = new WireMeta(); meta.wire = wire; line.UserData = meta; canvasControl1.AddItem(line); WireDirection(wire, meta); } // Vias foreach (var vias in model.viases) { CanvasPoint point = new CanvasPoint(vias.loc, 5, Color.Gold); #if DEBUG //point.Text = vias.id.ToString(); //point.TextColor = Color.DeepPink; #endif canvasControl1.AddItem(point); } canvasControl1.Invalidate(); }
public void DrawText(string text, IFont font, IBrush brush, CanvasPoint point) { DrawMultilineText(text.RemoveReturns(), point.ToSKPoint(), GetSKPaint(font, (SKPaint)brush.EngineElement)); }
public void DrawText(string text, IFont font, IBrush brush, CanvasPoint point, IDrawTextFormat format) { CheckUsability(); _graphics.DrawString(text, (Font)font.EngineElement, (Brush)brush.EngineElement, point.ToGdiPoint(), (StringFormat)format?.EngineElement); }
public void AddPoint(CanvasPoint p) { throw new NotImplementedException(); }
public void MouseMoveEventHandler(CanvasPoint mouseCoordinate) { if (Shapes.Count != 0 && !drawn && !ViewModelMediator.MovingMode) { var shape = Shapes.Last().Shape; if (shape is Polyline polyline) { if (mouseCoordinate.LeftMouseButtonPressed) { polyline.Points.Add(new System.Windows.Point(mouseCoordinate.AbsolutePoint.X, mouseCoordinate.AbsolutePoint.Y)); } } else if (shape is Line line && firstPoint != null) { line.X2 = mouseCoordinate.AbsolutePoint.X; line.Y2 = mouseCoordinate.AbsolutePoint.Y; } else if (secondPoint != null) { var xDiff = secondPoint.X - firstPoint.X; var yDiff = secondPoint.Y - firstPoint.Y; shape.Width = Math.Sqrt(Math.Pow(xDiff, 2) + Math.Pow(yDiff, 2)); var m = yDiff / xDiff; var c = firstPoint.Y - m * firstPoint.X; var tempHeight = (m * mouseCoordinate.AbsolutePoint.X - mouseCoordinate.AbsolutePoint.Y + c) / Math.Sqrt(Math.Pow(m, 2) + 1); if (shape is Rectangle) { shape.Height = Math.Abs(tempHeight); } else { shape.Height = Math.Abs(tempHeight) * 2; } Transform rectifyTranslate = Transform.Identity; Transform rectifyWidthTranslate = new TranslateTransform(-shape.Width / 2, 0); Transform translate = Transform.Identity; TransformGroup tansformGroup; if (!(shape.RenderTransform is TransformGroup existingGroup)) { translate = new TranslateTransform( (firstPoint.X + secondPoint.X) / 2, (firstPoint.Y + secondPoint.Y) / 2); tansformGroup = new TransformGroup(); tansformGroup.Children.Add(rectifyTranslate); tansformGroup.Children.Add(rectifyWidthTranslate); tansformGroup.Children.Add(translate); tansformGroup.Children.Add(shape.RenderTransform); shape.RenderTransform = tansformGroup; } tansformGroup = shape.RenderTransform as TransformGroup; if (tempHeight > 0) { tansformGroup.Children[0] = new TranslateTransform(0, -tempHeight); } else if (shape is Ellipse) { tansformGroup.Children[0] = new TranslateTransform(0, tempHeight); } } }
public void RightMouseUpEventHandler(CanvasPoint mouseCoordinate) { Reset(); }
public void DrawLine(IPen pen, CanvasPoint p1, CanvasPoint p2) { _canvas?.DrawLine(p1.ToSKPoint(), p2.ToSKPoint(), GetSKPaint(pen)); }
public void DrawBitmap(IBitmap bitmap, CanvasPoint point) { CheckUsability(); _graphics.DrawImage((Bitmap)bitmap.EngineElement, point.ToGdiPoint()); }