private void AddLine(ControlLineCanvas canvas1, ControlLineCanvas canvas2) { if (canvas1.IsDrawing) { canvas1.IsDrawing = false; var cl1 = canvas1.ControlLines[canvas1.ControlLines.Count - 1]; var cl2 = new ControlLine(canvas2, cl1); canvas2.ControlLines.Add(cl2); cl1.Mid.PreviewMouseRightButtonDown += DeleteLine; cl2.Mid.PreviewMouseRightButtonDown += DeleteLine; } }
public Morpher(ControlLineCanvas sourceCanvas, ControlLineCanvas destCanvas, int numFrames, double a, double b, double p) { this.numFrames = numFrames - 1; sourceLines = ControlLinesToPoints(sourceCanvas.ControlLines); destLines = ControlLinesToPoints(destCanvas.ControlLines); deltas = CalculateDeltas(sourceLines, destLines); source = sourceCanvas.DirectBitmap; dest = destCanvas.DirectBitmap; this.a = a; this.b = b; this.p = p; width = sourceCanvas.BitmapSource.PixelWidth; height = sourceCanvas.BitmapSource.PixelHeight; }
public ControlLine(ControlLineCanvas controlLineCanvas, double x, double y) { ControlLineCanvas = controlLineCanvas; Start = new ControlLineStartThumb(this, x, y); Mid = new ControlLineMidThumb(this, x, y); End = new ControlLineEndThumb(this, x, y); Line = new LineGeometry(); Path = new Path(); Path.Stroke = Brushes.LimeGreen; Path.StrokeThickness = 1; Path.Data = Line; ControlLineCanvas.canvas.Children.Add(Path); }
public ControlLine(ControlLineCanvas controlLineCanvas, ControlLine controlLine) { ControlLineCanvas = controlLineCanvas; Point startPos = controlLine.Start.GetPos(); Point endPos = controlLine.End.GetPos(); Start = new ControlLineStartThumb(this, startPos.X, startPos.Y); End = new ControlLineEndThumb(this, endPos.X, endPos.Y); Vector v = Point.Subtract(startPos, endPos); Mid = new ControlLineMidThumb(this, endPos.X + v.X / 2, endPos.Y + v.Y / 2); Canvas.SetZIndex(End, 2); Line = new LineGeometry(); Path = new Path(); Path.Stroke = Brushes.LimeGreen; Path.StrokeThickness = 1; Path.Data = Line; ControlLineCanvas.canvas.Children.Add(Path); UpdateLine(); }