| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- using System.Windows;
 
- using System.Windows.Controls;
 
- using System.Windows.Data;
 
- using System.Windows.Documents;
 
- using System.Windows.Input;
 
- using System.Windows.Media;
 
- using System.Windows.Media.Imaging;
 
- using System.Windows.Navigation;
 
- using System.Windows.Shapes;
 
- using System.Windows.Media.Animation;
 
- using MECF.Framework.UI.Client.IndustrialControl.Converters;
 
- namespace MECF.Framework.UI.Client.IndustrialControl.ELK
 
- {
 
-     /// <summary>
 
-     /// UserControl1.xaml 的交互逻辑
 
-     /// </summary>
 
-     public partial class PipeLine : UserControl
 
-     {
 
-         #region Contructor
 
-         /// <summary>
 
-         /// 实例化一个管道对象
 
-         /// </summary>
 
-         public PipeLine()
 
-         {
 
-             InitializeComponent();
 
-             //Binding binding = new Binding( );
 
-             //binding.Source = grid1;
 
-             //binding.Path = new PropertyPath( "ActualHeight" );
 
-             //binding.Converter = new MultiplesValueConverter( );
 
-             //binding.ConverterParameter = -1;
 
-             //ellipe1.SetBinding( Canvas.TopProperty, binding );
 
-         }
 
-         #endregion
 
-         #region Property Dependency
 
-         #region LeftDirection Property
 
-         /// <summary>
 
-         /// 设置左边的方向
 
-         /// </summary>
 
-         public HslPipeTurnDirection LeftDirection
 
-         {
 
-             get { return (HslPipeTurnDirection)GetValue(LeftDirectionProperty); }
 
-             set { SetValue(LeftDirectionProperty, value); }
 
-         }
 
-         // Using a DependencyProperty as the backing store for LeftDirection.  This enables animation, styling, binding, etc...
 
-         public static readonly DependencyProperty LeftDirectionProperty =
 
-             DependencyProperty.Register("LeftDirection", typeof(HslPipeTurnDirection), typeof(PipeLine),
 
-                 new PropertyMetadata(HslPipeTurnDirection.Left, new PropertyChangedCallback(LeftDirectionPropertyChangedCallback)));
 
-         public static void LeftDirectionPropertyChangedCallback(System.Windows.DependencyObject dependency, System.Windows.DependencyPropertyChangedEventArgs e)
 
-         {
 
-             PipeLine pipeLine = (PipeLine)dependency;
 
-             pipeLine.UpdateLeftDirectionBinding();
 
-         }
 
-         public void UpdateLeftDirectionBinding()
 
-         {
 
-             BindingOperations.ClearBinding(ellipe1, Canvas.TopProperty);
 
-             if (LeftDirection == HslPipeTurnDirection.Left)
 
-             {
 
-                 canvas1.Visibility = Visibility.Visible;
 
-                 Binding binding = new Binding();
 
-                 binding.Source = grid1;
 
-                 binding.Path = new PropertyPath("ActualHeight");
 
-                 binding.Converter = new MultiplesValueConverter();
 
-                 binding.ConverterParameter = 0;
 
-                 ellipe1.SetBinding(Canvas.TopProperty, binding);
 
-             }
 
-             else if (LeftDirection == HslPipeTurnDirection.Right)
 
-             {
 
-                 canvas1.Visibility = Visibility.Visible;
 
-                 Binding binding = new Binding();
 
-                 binding.Source = grid1;
 
-                 binding.Path = new PropertyPath("ActualHeight");
 
-                 binding.Converter = new MultiplesValueConverter();
 
-                 binding.ConverterParameter = -1;
 
-                 ellipe1.SetBinding(Canvas.TopProperty, binding);
 
-             }
 
-             else
 
-             {
 
-                 canvas1.Visibility = Visibility.Collapsed;
 
-             }
 
-             //  UpdatePathData();
 
-         }
 
-         #endregion
 
-         #region RightDirection Property
 
-         /// <summary>
 
-         /// 设置右边的方向
 
-         /// </summary>
 
-         public HslPipeTurnDirection RightDirection
 
-         {
 
-             get { return (HslPipeTurnDirection)GetValue(RightDirectionProperty); }
 
-             set { SetValue(RightDirectionProperty, value); }
 
-         }
 
-         // Using a DependencyProperty as the backing store for LeftDirection.  This enables animation, styling, binding, etc...
 
-         public static readonly DependencyProperty RightDirectionProperty =
 
-             DependencyProperty.Register("RightDirection", typeof(HslPipeTurnDirection), typeof(PipeLine),
 
-                 new PropertyMetadata(HslPipeTurnDirection.Right, new PropertyChangedCallback(RightDirectionPropertyChangedCallback)));
 
-         public static void RightDirectionPropertyChangedCallback(System.Windows.DependencyObject dependency, System.Windows.DependencyPropertyChangedEventArgs e)
 
-         {
 
-             PipeLine pipeLine = (PipeLine)dependency;
 
-             pipeLine.UpdateRightDirectionBinding();
 
-         }
 
-         public void UpdateRightDirectionBinding()
 
-         {
 
-             BindingOperations.ClearBinding(ellipe2, Canvas.TopProperty);
 
-             if (RightDirection == HslPipeTurnDirection.Left)
 
-             {
 
-                 canvas2.Visibility = Visibility.Visible;
 
-                 Binding binding = new Binding();
 
-                 binding.Source = grid1;
 
-                 binding.Path = new PropertyPath("ActualHeight");
 
-                 binding.Converter = new MultiplesValueConverter();
 
-                 binding.ConverterParameter = 0;
 
-                 ellipe2.SetBinding(Canvas.TopProperty, binding);
 
-             }
 
-             else if (RightDirection == HslPipeTurnDirection.Right)
 
-             {
 
-                 canvas2.Visibility = Visibility.Visible;
 
-                 Binding binding = new Binding();
 
-                 binding.Source = grid1;
 
-                 binding.Path = new PropertyPath("ActualHeight");
 
-                 binding.Converter = new MultiplesValueConverter();
 
-                 binding.ConverterParameter = -1;
 
-                 ellipe2.SetBinding(Canvas.TopProperty, binding);
 
-             }
 
-             else
 
-             {
 
-                 canvas2.Visibility = Visibility.Collapsed;
 
-             }
 
-             //  UpdatePathData();
 
-         }
 
-         #endregion
 
-         #region PipeLineActive Property
 
-         public bool PipeLineActive
 
-         {
 
-             get { return (bool)GetValue(PipeLineActiveProperty); }
 
-             set { SetValue(PipeLineActiveProperty, value); }
 
-         }
 
-         // Using a DependencyProperty as the backing store for PipeLineActive.  This enables animation, styling, binding, etc...
 
-         public static readonly DependencyProperty PipeLineActiveProperty =
 
-             DependencyProperty.Register("PipeLineActive", typeof(bool), typeof(PipeLine), new PropertyMetadata(false));
 
-         #endregion
 
-         protected override void OnRenderSizeChanged(SizeChangedInfo sizeInfo)
 
-         {
 
-             //   UpdatePathData();
 
-             base.OnRenderSizeChanged(sizeInfo);
 
-         }
 
-         #region LineOffect Property
 
-         public double LineOffect
 
-         {
 
-             get { return (double)GetValue(LineOffectProperty); }
 
-             set { SetValue(LineOffectProperty, value); }
 
-         }
 
-         // Using a DependencyProperty as the backing store for LineOffect.  This enables animation, styling, binding, etc...
 
-         public static readonly DependencyProperty LineOffectProperty =
 
-             DependencyProperty.Register("LineOffect", typeof(double), typeof(PipeLine), new PropertyMetadata(0d));
 
-         StreamGeometry sg = new StreamGeometry();
 
-         public void UpdatePathData()
 
-         {
 
-             //Console.WriteLine( "Size Changed" );
 
-             double height = Height;
 
-             double width = Width;
 
-             using (StreamGeometryContext context = sg.Open())
 
-             {
 
-                 if (LeftDirection == HslPipeTurnDirection.Left)
 
-                 {
 
-                     context.BeginFigure(new Point(height * 0.5, height), false, false);
 
-                     context.ArcTo(new Point(height, height * 0.5), new Size(height * 0.5, height * 0.5), 0, false, SweepDirection.Clockwise, true, false);
 
-                 }
 
-                 else if (LeftDirection == HslPipeTurnDirection.Right)
 
-                 {
 
-                     context.BeginFigure(new Point(height * 0.5, 0), false, false);
 
-                     context.ArcTo(new Point(height, height * 0.5), new Size(height * 0.5, height * 0.5), 0, false, SweepDirection.Counterclockwise, true, false);
 
-                 }
 
-                 else
 
-                 {
 
-                     context.BeginFigure(new Point(0, height * 0.5), false, false);
 
-                     context.LineTo(new Point(height, height * 0.5), true, false);
 
-                 }
 
-                 context.LineTo(new Point(width - height, height * 0.5), true, false);
 
-                 if (RightDirection == HslPipeTurnDirection.Left)
 
-                 {
 
-                     context.ArcTo(new Point(width - height * 0.5, height), new Size(height * 0.5, height * 0.5), 0, false, SweepDirection.Clockwise, true, false);
 
-                 }
 
-                 else if (RightDirection == HslPipeTurnDirection.Right)
 
-                 {
 
-                     context.ArcTo(new Point(width - height * 0.5, 0), new Size(height * 0.5, height * 0.5), 0, false, SweepDirection.Counterclockwise, true, false);
 
-                 }
 
-                 else
 
-                 {
 
-                     context.LineTo(new Point(width, height * 0.5), true, false);
 
-                 }
 
-             }
 
-             //sg.Freeze();
 
-             path1.Data = sg;
 
-         }
 
-         #endregion
 
-         #region MoveSpeed Property
 
-         /// <summary>
 
-         /// 获取或设置流动的速度
 
-         /// </summary>
 
-         public double MoveSpeed
 
-         {
 
-             get { return (double)GetValue(MoveSpeedProperty); }
 
-             set { SetValue(MoveSpeedProperty, value); }
 
-         }
 
-         // Using a DependencyProperty as the backing store for MoveSpeed.  This enables animation, styling, binding, etc...
 
-         public static readonly DependencyProperty MoveSpeedProperty =
 
-             DependencyProperty.Register("MoveSpeed", typeof(double), typeof(PipeLine), new PropertyMetadata(0.0d, new PropertyChangedCallback(MoveSpeedPropertyChangedCallback)));
 
-         public static void MoveSpeedPropertyChangedCallback(DependencyObject dependency, DependencyPropertyChangedEventArgs e)
 
-         {
 
-             PipeLine pipeLine = (PipeLine)dependency;
 
-             pipeLine.UpdateMoveSpeed();
 
-         }
 
-         private Storyboard storyboard = new Storyboard();
 
-         public void UpdateMoveSpeed()
 
-         {
 
-             //jet炉管删除流向动画
 
-             //if (path1.Data != null)
 
-             //{
 
-             //    path1.Data = null;
 
-             //    //offectDoubleAnimation.FillBehavior = FillBehavior.Stop;
 
-             //    //offectDoubleAnimation = null;
 
-             //    path1.Visibility = Visibility.Hidden;
 
-             //}
 
-             //return;
 
-             if (MoveSpeed > 0)
 
-             {
 
-            
 
-                 EdgeColor = Colors.DimGray;
 
-                 CenterColor = Colors.LightGray;
 
-                 ActiveLineCenterColor = Color.FromRgb(91, 160, 91);
 
-                 UpdatePathData();
 
-                 path1.Visibility = Visibility.Visible;
 
-                 //VisualStateManager.GoToState(this, "WEFlowState" , false);
 
-                 //offectDoubleAnimation = new DoubleAnimation(0d, 10d, TimeSpan.FromMilliseconds(300 / MoveSpeed));
 
-                 //offectDoubleAnimation.RepeatBehavior = RepeatBehavior.Forever;
 
-                 //BeginAnimation(LineOffectProperty, offectDoubleAnimation);
 
-                 //Storyboard.SetTarget(offectDoubleAnimation, path1);
 
-                 //Storyboard.SetTargetProperty(offectDoubleAnimation, "X");
 
-                 //storyboard.Children.Add(offectDoubleAnimation);
 
-                 //storyboard.Begin();
 
-             }
 
-             else if (MoveSpeed < 0)
 
-             {
 
-                 EdgeColor = Colors.DimGray;
 
-                 CenterColor = Colors.LightGray;
 
-                 UpdatePathData();
 
-                 path1.Visibility = Visibility.Visible;
 
-                 //offectDoubleAnimation = new DoubleAnimation(0d, -10d, TimeSpan.FromMilliseconds(300 / Math.Abs(MoveSpeed)));
 
-                 //offectDoubleAnimation.FillBehavior = FillBehavior.HoldEnd;
 
-                 //offectDoubleAnimation.RepeatBehavior = RepeatBehavior.Forever;
 
-                 //BeginAnimation(LineOffectProperty, offectDoubleAnimation);
 
-                 //Storyboard.SetTarget(offectDoubleAnimation, path1);
 
-                 ////Storyboard.SetTargetProperty(offectDoubleAnimation, "(UIElement.RenderTransform).(CompositeTransform.ScaleY)");
 
-                 //storyboard.Children.Add(offectDoubleAnimation);
 
-                 //storyboard.Begin();
 
-             }
 
-             else
 
-             {
 
-                 if (path1.Data != null)
 
-                 {
 
-                     path1.Data = null;
 
-                     //offectDoubleAnimation.FillBehavior = FillBehavior.Stop;
 
-                     //offectDoubleAnimation = null;
 
-                     path1.Visibility = Visibility.Hidden;
 
-                 }
 
-             }
 
-         }
 
-         #endregion
 
-         #region CenterColor Property
 
-         /// <summary>
 
-         /// 管道的中心颜色
 
-         /// </summary>
 
-         public Color CenterColor
 
-         {
 
-             get { return (Color)GetValue(CenterColorProperty); }
 
-             set { SetValue(CenterColorProperty, value); }
 
-         }
 
-         // Using a DependencyProperty as the backing store for CenterColor.  This enables animation, styling, binding, etc...
 
-         public static readonly DependencyProperty CenterColorProperty =
 
-             DependencyProperty.Register("CenterColor", typeof(Color), typeof(PipeLine), new PropertyMetadata(Colors.LightGray));
 
-         #endregion
 
-         #region PipeLineWidth Property
 
-         /// <summary>
 
-         /// 管道活动状态时的中心线的线条宽度
 
-         /// </summary>
 
-         public int PipeLineWidth
 
-         {
 
-             get { return (int)GetValue(PipeLineWidthProperty); }
 
-             set { SetValue(PipeLineWidthProperty, value); }
 
-         }
 
-         // Using a DependencyProperty as the backing store for PipeLineWidth.  This enables animation, styling, binding, etc...
 
-         public static readonly DependencyProperty PipeLineWidthProperty =
 
-             DependencyProperty.Register("PipeLineWidth", typeof(int), typeof(PipeLine), new PropertyMetadata(2));
 
-         #endregion
 
-         #region ActiveLineCenterColor Property
 
-         /// <summary>
 
-         /// 管道活动状态时的中心线的颜色信息
 
-         /// </summary>
 
-         public Color ActiveLineCenterColor
 
-         {
 
-             get { return (Color)GetValue(ActiveLineCenterColorProperty); }
 
-             set { SetValue(ActiveLineCenterColorProperty, value); }
 
-         }
 
-         // Using a DependencyProperty as the backing store for ActiveLineCenterColor.  This enables animation, styling, binding, etc...
 
-         public static readonly DependencyProperty ActiveLineCenterColorProperty =
 
-             DependencyProperty.Register("ActiveLineCenterColor", typeof(Color), typeof(PipeLine), new PropertyMetadata(Colors.DodgerBlue));
 
-         #endregion
 
-         #region MyRegion
 
-         /// <summary>
 
-         /// 管道控件的边缘颜色
 
-         /// </summary>
 
-         public Color EdgeColor
 
-         {
 
-             get { return (Color)GetValue(EdgeColorProperty); }
 
-             set { SetValue(EdgeColorProperty, value); }
 
-         }
 
-         // Using a DependencyProperty as the backing store for EdgeColor.  This enables animation, styling, binding, etc...
 
-         public static readonly DependencyProperty EdgeColorProperty =
 
-             DependencyProperty.Register("EdgeColor", typeof(Color), typeof(PipeLine), new PropertyMetadata(Colors.DimGray));
 
-         #endregion
 
-         #endregion
 
-     }
 
-     public enum HslPipeTurnDirection
 
-     {
 
-         /// <summary>
 
-         /// 向上
 
-         /// </summary>
 
-         Up = 1,
 
-         /// <summary>
 
-         /// 向下
 
-         /// </summary>
 
-         Down = 2,
 
-         /// <summary>
 
-         /// 向左
 
-         /// </summary>
 
-         Left = 3,
 
-         /// <summary>
 
-         /// 向右
 
-         /// </summary>
 
-         Right = 4,
 
-         /// <summary>
 
-         /// 无效果
 
-         /// </summary>
 
-         None = 5,
 
-     }
 
- }
 
 
  |