コード例 #1
0
ファイル: MainWindow.xaml.cs プロジェクト: DmitriuSsS/CGG_WPF
        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();
        }
コード例 #2
0
        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));
        }