public void PaintFiguresAtWriteableBitmap(ViewPort camera) { children.Clear(); foreach (var element in GraphicRedactor.figures) { DrawingVisual drawingVisual = new DrawingVisual(); var drawingContext = drawingVisual.RenderOpen(); var globalFigure = element.Clone() as Figure; globalFigure.ToWorldCoordinates(camera); globalFigure.Draw(drawingContext, camera); drawingContext.Close(); children.Add(drawingVisual); } }
public override void MouseLeftButtonDown(int xCoord, int yCoord, ViewPort camera) { Figure zoomLayout = new Rectangle(xCoord, yCoord, xCoord, yCoord, new SolidColorBrush(Colors.Aqua), Colors.Black, 5, DashStyles.Solid, new SolidColorBrush()); zoomLayout.ToLocalCoordinates(camera); GraphicRedactor.figures.AddLast(zoomLayout); x1 = zoomLayout.X1; y1 = zoomLayout.Y1; x2 = zoomLayout.X2; y2 = zoomLayout.Y2; GraphicRedactor.ToolState = DrawingStates.DrawingState; }
public override void ToWorldCoordinates(ViewPort camera) { if (WorldPointsList == null) { WorldPointsList = new List <Point>(); } else { WorldPointsList.Clear(); } for (int i = 0; i < PointsList.Count; i++) { var point = new Point((PointsList[i].X - camera.Start.X) * camera.Scale, (PointsList[i].Y - camera.Start.Y) * camera.Scale); WorldPointsList.Add(point); } }
public override void MouseLeftButtonUp(ViewPort camera) { GraphicRedactor.figures.RemoveLast(); GraphicRedactor.ToolState = DrawingStates.NotDrawingState; if (camera.Scale > 50) { return; } if (Point.Subtract(new Point(x1, y1), new Point(x2, y2)).Length > 2) { double scaleX = (camera.End.X - camera.Start.X) / (x2 - x1); double scaleY = (camera.End.Y - camera.Start.Y) / (y2 - y1); double scale = (scaleX + scaleY) / 2; camera.Scale *= scale; camera.Start = new Point(x1, y1); camera.End = new Point(x2, y2); } else { double NewWidth = (camera.End.X - camera.Start.X) / 2; double NewHeight = (camera.End.Y - camera.Start.Y) / 2; camera.Start = new Point() { X = x1 - NewWidth / 2, Y = y1 - NewHeight / 2 }; camera.End = new Point() { X = camera.Start.X + NewWidth, Y = camera.Start.Y + NewHeight }; camera.Scale *= 2; } }
public override void MouseRightButtonUp(ViewPort camera, int x, int y) { x1 = x; y1 = y; if (camera.Scale > 0.1) { double NewWidth = (camera.End.X - camera.Start.X) * 2; double NewHeight = (camera.End.Y - camera.Start.Y) * 2; camera.Start = new Point() { X = x1 / camera.Scale + camera.Start.X - NewWidth / 2, Y = y1 / camera.Scale + camera.Start.Y - NewHeight / 2 }; camera.End = new Point() { X = camera.Start.X + NewWidth, Y = camera.Start.Y + NewHeight }; camera.Scale /= 2; } }
public override void MouseLeftButtonDown(int xCoord, int yCoord, ViewPort camera) { x1 = xCoord; y1 = yCoord; GraphicRedactor.ToolState = DrawingStates.DrawingState; }
public abstract void MouseRightButtonUp(ViewPort camera, int x, int y);
public abstract void MouseLeftButtonUp(ViewPort camera);
public abstract void MouseMove(int xCoord, int yCoord, ViewPort camera);
public abstract void MouseLeftButtonDown(int xCoord, int yCoord, ViewPort camera);
public abstract void Resize(int xCoord, int yCoord, ViewPort camera);
public override void Resize(int xCoord, int yCoord, ViewPort camera) { Point point = ToLocalCoordinates(new Point(xCoord, yCoord), camera); PointsList.Add(point); }
public Point ToLocalCoordinates(Point point, ViewPort camera) => new Point(point.X / camera.Scale + camera.Start.X, point.Y / camera.Scale + camera.Start.Y);
public override void MouseLeftButtonUp(ViewPort camera) { GraphicRedactor.ToolState = DrawingStates.NotDrawingState; }
public override void MouseRightButtonUp(ViewPort camera, int x, int y) { }
public override void MouseRightButtonUp(ViewPort camera, int x, int y) { //throw new System.NotImplementedException(); }
public abstract void Draw(DrawingContext drawingContext, ViewPort camera);