Пример #1
0
        //@Construct
        public DottedLinePage()
        {
            this.InitializeComponent();
            this.Loaded += async(s2, e2) =>
            {
                this.MarkdownText1.Text = await FanKit.Samples.File.GetFile("ms-appx:///TXT/Transformers/DottedLinePage.xaml.txt");

                this.MarkdownText1.LinkClicked += async(s, e) => await Launcher.LaunchUriAsync(new Uri("https://github.com/ysdy44/FanKit-UWP/blob/master/FanKit/Frames/Transformers/DottedLinePage.xaml"));

                this.MarkdownText2.Text = await FanKit.Samples.File.GetFile("ms-appx:///TXT/Transformers/DottedLinePage.xaml.cs.txt");

                this.MarkdownText2.LinkClicked += async(s, e) => await Launcher.LaunchUriAsync(new Uri("https://github.com/ysdy44/FanKit-UWP/blob/master/FanKit/Frames/Transformers/DottedLinePage.xaml.cs"));
            };

            this.ResetButton.Tapped += (s, e) =>
            {
                //DottedLine
                using (var ds = this.DottedLineImage.CreateDrawingSession())
                {
                    ds.Clear(Windows.UI.Colors.Transparent);
                }
                this.DottedLineImage.Baking(this.CanvasAnimatedControl);
            };

            #region Draw


            //Canvas
            this.CanvasAnimatedControl.SizeChanged += (s, e) =>
            {
                if (e.NewSize == e.PreviousSize)
                {
                    return;
                }
            };
            this.CanvasAnimatedControl.CreateResources += (sender, args) =>
            {
                CanvasRenderTarget canvasRenderTarget = new CanvasRenderTarget(sender, this._canvasWidth, this._canvasHeight);

                //DottedLine
                this.DottedLineImage = new DottedLineImage(canvasRenderTarget);
                this.DottedLineBrush = new DottedLineBrush(sender, 6);

                this.DottedLineImage.Baking(sender);
            };
            this.CanvasAnimatedControl.Draw += (sender, args) =>
            {
                int width  = this._canvasWidth;
                int height = this._canvasHeight;

                //DottedLine
                args.DrawingSession.DrawDottedLine(sender, this.DottedLineBrush, this.DottedLineImage, this._canvasWidth, this._canvasHeight);

                Rect rect = this._transformerRect.ToRect();
                args.DrawingSession.DrawThickRectangle(rect);
            };
            this.CanvasAnimatedControl.Update += (sender, args) =>
            {
                this.DottedLineBrush.Update(1);
            };


            #endregion

            #region CanvasOperator


            //Single
            this.CanvasOperator.Single_Start += (point) =>
            {
                this._startingPoint   = point;
                this._transformerRect = new TransformerRect(point, point);
            };
            this.CanvasOperator.Single_Delta += (point) =>
            {
                this._transformerRect = new TransformerRect(_startingPoint, point);
            };
            this.CanvasOperator.Single_Complete += (point) =>
            {
                //DottedLine
                using (var ds = this.DottedLineImage.CreateDrawingSession())
                {
                    ds.FillRectangle(this._transformerRect.ToRect(), Windows.UI.Colors.Gray);
                }
                this.DottedLineImage.Baking(this.CanvasAnimatedControl);

                this._transformerRect = new TransformerRect(Vector2.Zero, Vector2.Zero);
            };


            #endregion
        }
Пример #2
0
        //@Construct
        public DottedLinePage2()
        {
            this.InitializeComponent();
            this.Loaded += async(s2, e2) =>
            {
                this.MarkdownText1.Text = await FanKit.Samples.File.GetFile("ms-appx:///TXT/Transformers/DottedLinePage2.xaml.txt");

                this.MarkdownText1.LinkClicked += async(s, e) => await Launcher.LaunchUriAsync(new Uri("https://github.com/ysdy44/FanKit-UWP/blob/master/FanKit/Frames/Transformers/DottedLinePage2.xaml"));

                this.MarkdownText2.Text = await FanKit.Samples.File.GetFile("ms-appx:///TXT/Transformers/DottedLinePage2.xaml.cs.txt");

                this.MarkdownText2.LinkClicked += async(s, e) => await Launcher.LaunchUriAsync(new Uri("https://github.com/ysdy44/FanKit-UWP/blob/master/FanKit/Frames/Transformers/DottedLinePage2.xaml.cs"));
            };

            this.ResetButton.Tapped += (s, e) =>
            {
                using (var ds = this.DottedLineImage.CreateDrawingSession())
                {
                    ds.Clear(Windows.UI.Colors.Transparent);
                }
                this.DottedLineImage.Baking(this.CanvasAnimatedControl);

                this.CanvasTransformer.Fit();
            };
            this.RadianSlider.ValueChanged += (s, e) =>
            {
                float radian = ((float)e.NewValue) * FanKit.Math.Pi / 180.0f;
                this.CanvasTransformer.Radian = radian;
                this.CanvasTransformer.ReloadMatrix();

                Matrix3x2 matrix = this.CanvasTransformer.GetMatrix();
                this.DottedLineImage.Baking(this.CanvasAnimatedControl, matrix);
                this.CanvasAnimatedControl.Invalidate();
            };


            #region Draw


            //Canvas
            this.CanvasAnimatedControl.SizeChanged += (s, e) =>
            {
                if (e.NewSize == e.PreviousSize)
                {
                    return;
                }
                this.CanvasTransformer.Size = e.NewSize;
            };
            this.CanvasAnimatedControl.CreateResources += (sender, args) =>
            {
                CanvasRenderTarget canvasRenderTarget = new CanvasRenderTarget(sender, this.CanvasTransformer.Width, this.CanvasTransformer.Height);
                this.DottedLineImage = new DottedLineImage(canvasRenderTarget);
                this.DottedLineBrush = new DottedLineBrush(sender, 6);

                Matrix3x2 matrix = this.CanvasTransformer.GetMatrix();
                this.DottedLineImage.Baking(sender, matrix);
            };
            this.CanvasAnimatedControl.Draw += (sender, args) =>
            {
                Matrix3x2 matrix = this.CanvasTransformer.GetMatrix();

                //DrawCrad
                var previousImage = new ColorSourceEffect {
                    Color = Windows.UI.Colors.White
                };
                args.DrawingSession.DrawCrad(previousImage, this.CanvasTransformer);

                //DrawDottedLine
                args.DrawingSession.DrawDottedLine(sender, this.DottedLineBrush, this.DottedLineImage, this.CanvasTransformer.Width, this.CanvasTransformer.Height);

                CanvasGeometry canvasGeometry          = this._transformerRect.ToRectangle(sender);
                CanvasGeometry canvasGeometryTransform = canvasGeometry.Transform(matrix);
                args.DrawingSession.DrawThickGeometry(canvasGeometryTransform);
            };
            this.CanvasAnimatedControl.Update += (sender, args) =>
            {
                this.DottedLineBrush.Update(1);
            };


            #endregion


            #region CanvasOperator


            //Single
            this.CanvasOperator.Single_Start += (point) =>
            {
                Matrix3x2 inverseMatrix = this.CanvasTransformer.GetInverseMatrix();
                Vector2   canvasPoint   = Vector2.Transform(point, inverseMatrix);

                this._startingPoint = point;

                this._transformerRect = new TransformerRect(point, point);
            };
            this.CanvasOperator.Single_Delta += (point) =>
            {
                Matrix3x2 inverseMatrix       = this.CanvasTransformer.GetInverseMatrix();
                Vector2   canvasStartingPoint = Vector2.Transform(this._startingPoint, inverseMatrix);
                Vector2   canvasPoint         = Vector2.Transform(point, inverseMatrix);

                this._transformerRect = new TransformerRect(canvasStartingPoint, canvasPoint);
            };
            this.CanvasOperator.Single_Complete += (point) =>
            {
                Matrix3x2 matrix              = this.CanvasTransformer.GetMatrix();
                Matrix3x2 inverseMatrix       = this.CanvasTransformer.GetInverseMatrix();
                Vector2   canvasStartingPoint = Vector2.Transform(this._startingPoint, inverseMatrix);
                Vector2   canvasPoint         = Vector2.Transform(point, inverseMatrix);

                //DottedLine
                using (var ds = this.DottedLineImage.CreateDrawingSession())
                {
                    TransformerRect transformerRect = new TransformerRect(canvasStartingPoint, canvasPoint);
                    ds.FillRectangle(transformerRect.ToRect(), Windows.UI.Colors.Gray);
                }
                this.DottedLineImage.Baking(this.CanvasAnimatedControl, matrix);

                this._transformerRect = new TransformerRect(Vector2.Zero, Vector2.Zero);
            };


            //Right
            this.CanvasOperator.Right_Start += (point) =>
            {
                this.CanvasTransformer.CacheMove(point);
            };
            this.CanvasOperator.Right_Delta += (point) =>
            {
                this.CanvasTransformer.Move(point);

                //DottedLine
                Matrix3x2 matrix = this.CanvasTransformer.GetMatrix();
                this.DottedLineImage.Baking(this.CanvasAnimatedControl, matrix);
                this.CanvasAnimatedControl.Invalidate();
            };
            this.CanvasOperator.Right_Complete += (point) =>
            {
                this.CanvasTransformer.Move(point);

                //DottedLine
                Matrix3x2 matrix = this.CanvasTransformer.GetMatrix();
                this.DottedLineImage.Baking(this.CanvasAnimatedControl, matrix);
                this.CanvasAnimatedControl.Invalidate();
            };


            //Double
            this.CanvasOperator.Double_Start += (center, space) =>
            {
                this.CanvasTransformer.CachePinch(center, space);
                this.CanvasAnimatedControl.Invalidate();
            };
            this.CanvasOperator.Double_Delta += (center, space) =>
            {
                this.CanvasTransformer.Pinch(center, space);

                //DottedLine
                Matrix3x2 matrix = this.CanvasTransformer.GetMatrix();
                this.DottedLineImage.Baking(this.CanvasAnimatedControl, matrix);
                this.CanvasAnimatedControl.Invalidate();
            };
            this.CanvasOperator.Double_Complete += (center, space) =>
            {
                //DottedLine
                Matrix3x2 matrix = this.CanvasTransformer.GetMatrix();
                this.DottedLineImage.Baking(this.CanvasAnimatedControl, matrix);
                this.CanvasAnimatedControl.Invalidate();
            };


            //Wheel
            this.CanvasOperator.Wheel_Changed += (point, space) =>
            {
                if (space > 0)
                {
                    this.CanvasTransformer.ZoomIn(point);
                }
                else
                {
                    this.CanvasTransformer.ZoomOut(point);
                }

                //DottedLine
                Matrix3x2 matrix = this.CanvasTransformer.GetMatrix();
                this.DottedLineImage.Baking(this.CanvasAnimatedControl, matrix);
                this.CanvasAnimatedControl.Invalidate();
            };


            #endregion
        }