//@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 }
//@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 }