public MainWindow() { InitializeComponent(); _lineClass = new line(this); Task2.DataContext = _lineClass; GraphicMaster = new GraphicLine(0.5, 10); A_Source.DataContext = GraphicMaster; B_Source.DataContext = GraphicMaster; C_Sourse.DataContext = GraphicMaster; D_Sourse.DataContext = GraphicMaster; A_Source2.DataContext = _lineClass; B_Source2.DataContext = _lineClass; this.ContentRendered += OnInitialized; Task1Canvas.Background = new LinearGradientBrush(Colors.Teal, Colors.SteelBlue, 10); Task1Canvas.Background.Opacity = .1; Task1Canvas.SizeChanged += OnInitialized; Task1Canvas.SizeChanged += Task1CanvasOnSizeChanged; GraphicMaster.PropertyChanged += (sender, args) => reDraw(); fieldController = new FieldController(Task1Canvas); fieldController.Rescalled += MouseHandlerOnShiftDone; mouseHandler = new MouseHandler(fieldController, Task1Canvas); mouseHandler.ShiftDone += MouseHandlerOnShiftDone; Task1Canvas.MouseDown += mouseHandler.Task1CanvasOnMouseDown; Task1Canvas.MouseLeave += mouseHandler.Task1CanvasOnMouseLeave; Task1Canvas.MouseMove += mouseHandler.Task1CanvasOnMouseMove; Task1Canvas.MouseMove += ImageMotion; Task1Canvas.MouseUp += mouseHandler.Task1CanvasOnMouseUp; Task1Canvas.MouseWheel += mouseHandler.Task1CanvasOnMouseWheel; Task1Canvas.MouseWheel += ImageMotion; _lines = new lines(); }
private void REdRAW() { window.Task2Canvas.Children.Clear(); var lineGenerator = new lines(); var pixX = Enumerable.Range(-(int)shiftX, MaxX(window.Task2Canvas)).ToList(); var xLines = pixX.Select(p => pixelsize * p).Select(p => lineGenerator.VerticalLine(p, window.Task2Canvas)).ToList(); var pixY = Enumerable.Range((int)shiftY, MaxY(window.Task2Canvas)).ToList(); var yLines = pixY.Select(p => pixelsize * p).Select(p => lineGenerator.HorizontalLine(p, window.Task2Canvas)).ToList(); foreach (var yLine in yLines) { // window.Task2Canvas.Children.Add(Styles.ApplyPixelDilimeterLineStyle(yLine, 1 - 1/(pixelsize + 1))); } foreach (var xLine in xLines) { // window.Task2Canvas.Children.Add(Styles.ApplyPixelDilimeterLineStyle(xLine, 1 - 1/(pixelsize + 1))); } // var bounds = Brezenhem.GetPointsBound(a_Field, b_Field); var points = Brezenhem.GetPoints(bounds.First(), bounds.Last()); var filterReversed = Brezenhem.DeFilter(points); var elipse = BrezenhemElipse.GetElipse(c_Field, d_Field).Select(ShiftToCenter); var toDraw = filterReversed.Concat(elipse).Where(p => IsInCanvas(p, window.Task2Canvas)).ToList(); // var norm = toDraw.Select(p => new Point(p.X, MaxY(window.Task2Canvas) - p.Y)).ToList(); norm.ForEach((p) => DrawPixel(window.Task2Canvas, p)); }