| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Documents;
- using System.Windows.Media;
- namespace TeamAAS.FlowEditor.Controls
- {
- public class DragAdorner : Adorner
- {
- private readonly Border _child;
- private TranslateTransform _transform = new TranslateTransform();
- public DragAdorner(UIElement adornedElement, Border child) : base(adornedElement)
- {
- _child = child;
- _child.Opacity = 0.7;
- _child.IsHitTestVisible = false;
- _child.RenderTransform = _transform;
- AddVisualChild(_child);
- }
- public void SetPosition(double x, double y)
- {
- _transform.X = x;
- _transform.Y = y;
- InvalidateVisual();
- }
- /// <summary>显示/隐藏预览(移出画布时隐藏)</summary>
- public void SetVisible(bool visible)
- {
- _child.Visibility = visible ? Visibility.Visible : Visibility.Collapsed;
- }
- protected override Visual GetVisualChild(int index) => _child;
- protected override int VisualChildrenCount => 1;
- protected override Size MeasureOverride(Size constraint)
- {
- _child.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
- return _child.DesiredSize;
- }
- protected override Size ArrangeOverride(Size finalSize)
- {
- _child.Arrange(new Rect(finalSize));
- return finalSize;
- }
- protected override Geometry GetLayoutClip(Size layoutSlotSize) => null;
- }
- }
|