private void DeselectAll() { if (SelectedVisuals == null || SelectedVisuals.Count < 1) { return; } for (int i = SelectedVisuals.Count - 1; i >= 0; i--) { Visuals[i].IsSelected = false; } SelectedVisuals.Clear(); }
private void OnRendering(Object sender, EventArgs e) { _sbSelected.Clear(); _isChanged = false; var element = _viewHost.View; //MeasureContext.ViewState = _viewHost; var size = new ValueRenderSize(_viewHost.RenderMargin.Width, _viewHost.RenderMargin.Height); var measured = MeasureContext.MeasureMainView(element, size, _viewHost); var selectedVisual = SelectedVisuals?.FirstOrDefault(); if (selectedVisual == null) { return; } _sbSelected.AppendLine(element.ToString()); _sbSelected.AppendLine("Measured: " + measured); _sbSelected.AppendLine("Arranged: " + selectedVisual.Position); var nonDefaults = GetNonDefaultSetters(element).ToArray(); foreach (var kvp in nonDefaults) { _sbSelected.AppendLine(kvp.ToString()); } //_sbSelected.AppendLine(kvp.Key + ": " + kvp.Value); _rightRectangle = new Rectangle(_viewHost.AvailableSize.Width - _viewHost.RenderMargin.Right, 0, _viewHost.RenderMargin.Width, _viewHost.AvailableSize.Height); //RenderContext.ViewState = _viewHost; RenderContext.FillRectangle(_rightRectangle, SolidColorBrush.DarkGray); if (selectedVisual.Element == null) { return; } RenderContext.DrawString(_sbSelected.ToString(), _font, _rightRectangle, SolidColorBrush.White); }
private void Thumb_DragCompleted(object sender, DragCompletedEventArgs e) { var thumb = e.OriginalSource as Thumb; if (thumb == _thumbs[8]) { Vector delta = Func.VectorRotate(-SelectedVisuals.RefAngle, MoveOffset.X / Scale, MoveOffset.Y / Scale); SelectedVisuals.Move(delta); SetTransformOperator(); } MoveOffset = new Point(0, 0); BoundsRect = Rect.Empty; AccentPen.Thickness = 0; e.Handled = true; }
private void Thumb_DragDelta(object sender, DragDeltaEventArgs e) { var thumb = e.OriginalSource as Thumb; if (thumb == _thumbs[8]) { MoveOffset = new Point(e.HorizontalChange, e.VerticalChange); } else if (thumb == _thumbs[9]) { Point cp = new Point(Width / 2, Height / 2); Point rp = new Point(Width / 2, BarLength); double l = Height / 2 - BarLength; double s = e.HorizontalChange; double delta = Math.Atan2(e.HorizontalChange, Height / 2 - BarLength) / Math.PI * 180; SelectedVisuals.Rotate(delta); SetTransformOperator(); } else { FrameworkElement element = thumb as FrameworkElement; Point refer = SelectedVisuals.RefRect.Location; //Point refer = RegionRect.Location; double dx, dy; switch (element.HorizontalAlignment) { case HorizontalAlignment.Left: dx = -e.HorizontalChange; //refer.X += RegionRect.Width; refer.X += SelectedVisuals.RefRect.Width; break; case HorizontalAlignment.Right: dx = e.HorizontalChange; break; default: dx = 0; break; } switch (element.VerticalAlignment) { case VerticalAlignment.Top: dy = -e.VerticalChange; //refer.Y += RegionRect.Height; refer.Y += SelectedVisuals.RefRect.Height; break; case VerticalAlignment.Bottom: dy = e.VerticalChange; break; default: dy = 0; break; } //refer = Watermark.Transform.Inverse.Transform(refer); //refer = new RotateTransform(SelectedVisuals.RefAngle).Transform(refer); double factorX = Width + dx <= 0 ? 0 : dx / Width; double factorY = Height + dy <= 0 ? 0 : dy / Height; //factorX = 1; SelectedVisuals.Resize(factorX, factorY, refer); SetTransformOperator(); } e.Handled = true; }