|
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- 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.Animation;
- using System.Windows.Media.Imaging;
- using System.Windows.Navigation;
- using System.Windows.Shapes;
-
- namespace BPASmartClient.CustomResource.UserControls
- {
- /// <summary>
- /// ConveyorBelt.xaml 的交互逻辑
- /// </summary>
- public partial class ConveyorBelt : UserControl
- {
- public ConveyorBelt()
- {
- InitializeComponent();
- this.SizeChanged += ConveyorBelt_SizeChanged;
- }
-
- private void ConveyorBelt_SizeChanged(object sender, SizeChangedEventArgs e)
- {
- //传送带外边框绘制
- PathGeometry geometry = new PathGeometry();
- PathFigure pathFigure = new PathFigure();
- pathFigure.StartPoint = new Point(this.Height / 2, 0);
- pathFigure.Segments.Add(new ArcSegment(new Point(this.Height / 2, this.Height), new Size(this.Height / 2, this.Height / 2), 0, false, SweepDirection.Counterclockwise, true));
- pathFigure.Segments.Add(new LineSegment(new Point(this.Width, this.Height), true));
- pathFigure.Segments.Add(new LineSegment(new Point(this.Width, this.Height - ConveyorBeltWidth), true));
- double innerCircle = (this.Height - (ConveyorBeltWidth * 2)) / 2;//内圆半径
- pathFigure.Segments.Add(new LineSegment(new Point(ConveyorBeltWidth + innerCircle, this.Height - ConveyorBeltWidth), true));
- pathFigure.Segments.Add(new ArcSegment(new Point(ConveyorBeltWidth + innerCircle, ConveyorBeltWidth), new Size(innerCircle, innerCircle), 0, false, SweepDirection.Clockwise, true));
- pathFigure.Segments.Add(new LineSegment(new Point(this.Width, ConveyorBeltWidth), true));
- pathFigure.Segments.Add(new LineSegment(new Point(this.Width, 0), true));
- pathFigure.Segments.Add(new LineSegment(new Point(this.Height / 2, 0), true));
- geometry.Figures.Add(pathFigure);
- this.cb.Data = geometry;
-
- //传送带内部皮带绘制
- PathGeometry geometry1 = new PathGeometry();
- PathFigure pathFigure1 = new PathFigure();
- pathFigure1.StartPoint = new Point(this.Width, ConveyorBeltWidth / 2);
- double innerCircle1 = (this.Height - ConveyorBeltWidth) / 2;//内圆半径
- pathFigure1.Segments.Add(new LineSegment(new Point(innerCircle1 + ConveyorBeltWidth / 2, ConveyorBeltWidth / 2), true));
- pathFigure1.Segments.Add(new ArcSegment(new Point(innerCircle1 + ConveyorBeltWidth / 2, this.Height - ConveyorBeltWidth / 2), new Size(innerCircle1, innerCircle1), 0, false, SweepDirection.Counterclockwise, true));
- pathFigure1.Segments.Add(new LineSegment(new Point(this.Width, this.Height - ConveyorBeltWidth / 2), true));
- geometry1.Figures.Add(pathFigure1);
- this.mp.Data = geometry1;
-
- }
-
- private static void OnPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
- {
- (d as ConveyorBelt)?.Refursh();
- }
-
- private void Refursh()
- {
- if (Direction == 1) VisualStateManager.GoToState(this, "Left", false);
- else if (Direction == 2) VisualStateManager.GoToState(this, "Right", false);
- else VisualStateManager.GoToState(this, "Stop", false);
- }
-
-
- public DoubleCollection StrokeDashArray
- {
- get { return (DoubleCollection)GetValue(StrokeDashArrayProperty); }
- set { SetValue(StrokeDashArrayProperty, value); }
- }
- public static readonly DependencyProperty StrokeDashArrayProperty =
- DependencyProperty.Register("StrokeDashArray", typeof(DoubleCollection), typeof(ConveyorBelt),
- new PropertyMetadata(default, new PropertyChangedCallback(OnPropertyChanged)));
-
-
- public double ConveyorBeltWidth
- {
- get { return (double)GetValue(ConveyorBeltWidthProperty); }
- set { SetValue(ConveyorBeltWidthProperty, value); }
- }
- public static readonly DependencyProperty ConveyorBeltWidthProperty =
- DependencyProperty.Register("ConveyorBeltWidth", typeof(double), typeof(ConveyorBelt),
- new PropertyMetadata(50.0, new PropertyChangedCallback(OnPropertyChanged)));
-
-
- public Brush StrokeFillBrush
- {
- get { return (Brush)GetValue(StrokeFillBrushProperty); }
- set { SetValue(StrokeFillBrushProperty, value); }
- }
- public static readonly DependencyProperty StrokeFillBrushProperty =
- DependencyProperty.Register("StrokeFillBrush", typeof(Brush), typeof(ConveyorBelt),
- new PropertyMetadata(Brushes.LightBlue, new PropertyChangedCallback(OnPropertyChanged)));
-
-
-
- public Brush StrokeBrush
- {
- get { return (Brush)GetValue(StrokeBrushProperty); }
- set { SetValue(StrokeBrushProperty, value); }
- }
- public static readonly DependencyProperty StrokeBrushProperty =
- DependencyProperty.Register("StrokeBrush", typeof(Brush), typeof(ConveyorBelt),
- new PropertyMetadata(Brushes.LightBlue, new PropertyChangedCallback(OnPropertyChanged)));
-
-
- public double StrokeThickness
- {
- get { return (double)GetValue(StrokeThicknessProperty); }
- set { SetValue(StrokeThicknessProperty, value); }
- }
- public static readonly DependencyProperty StrokeThicknessProperty =
- DependencyProperty.Register("StrokeThickness", typeof(double), typeof(ConveyorBelt),
- new PropertyMetadata(1.0, new PropertyChangedCallback(OnPropertyChanged)));
-
-
- public int Direction
- {
- get { return (int)GetValue(DirectionProperty); }
- set { SetValue(DirectionProperty, value); }
- }
- public static readonly DependencyProperty DirectionProperty =
- DependencyProperty.Register("Direction", typeof(int), typeof(ConveyorBelt),
- new PropertyMetadata(0, new PropertyChangedCallback(OnPropertyChanged)));
-
-
- }
- }
|