| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 | <UserControl x:Class="CyberX8_Themes.UserControls.PufControl"             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"              xmlns:local="clr-namespace:CyberX8_Themes.UserControls"             xmlns:converters="clr-namespace:CyberX8_Themes.Converters"             mc:Ignorable="d" Name="pufControl"             d:DesignHeight="150" d:DesignWidth="450">    <UserControl.Resources>        <converters:StringToVisibility1 x:Key="stringToVisibility1"/>        <converters:StringToVisibility x:Key="stringToVisibility"/>    </UserControl.Resources>    <!--<VisualStateManager.VisualStateGroups>        <VisualStateGroup>            <VisualState Name="Parker">                <Storyboard FillBehavior="HoldEnd" >                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="xAction" Storyboard.TargetProperty="X">                        <LinearDoubleKeyFrame Value="15" KeyTime="0:0:1"/>                    </DoubleAnimationUsingKeyFrames>                </Storyboard>            </VisualState>            <VisualState Name="Loader">                <Storyboard FillBehavior="HoldEnd">                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="xAction" Storyboard.TargetProperty="X">                        <LinearDoubleKeyFrame Value="295" KeyTime="0:0:1"/>                    </DoubleAnimationUsingKeyFrames>                </Storyboard>            </VisualState>            <VisualState Name="Efem">                <Storyboard FillBehavior="HoldEnd">                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="xAction" Storyboard.TargetProperty="X">                        <LinearDoubleKeyFrame Value="-218" KeyTime="0:0:1"/>                    </DoubleAnimationUsingKeyFrames>                </Storyboard>            </VisualState>        </VisualStateGroup>        <VisualStateGroup>            <VisualState Name="Origin">                <Storyboard FillBehavior="HoldEnd">                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="rotationAction" Storyboard.TargetProperty="Angle">                        <LinearDoubleKeyFrame Value="0" KeyTime="0:0:1"/>                    </DoubleAnimationUsingKeyFrames>                </Storyboard>            </VisualState>            <VisualState  Name="Reverse">                <Storyboard FillBehavior="HoldEnd">                    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="rotationAction" Storyboard.TargetProperty="Angle">                        <SplineDoubleKeyFrame  Value="-180" KeyTime="0:0:1"/>                    </DoubleAnimationUsingKeyFrames>                </Storyboard>            </VisualState>        </VisualStateGroup>    </VisualStateManager.VisualStateGroups>-->    <Viewbox Stretch="Fill">        <Canvas Width="450" Height="150">            <Canvas.RenderTransform>                <TransformGroup>                    <TranslateTransform  x:Name="xAction" />                </TransformGroup>            </Canvas.RenderTransform>            <!--PUF1Arm-->            <Canvas Width="33" Height="65" Canvas.Top="66" Canvas.Left="105" Visibility="{Binding PufName, ElementName=pufControl,Converter={StaticResource stringToVisibility}}">                <Path Stroke="Silver" StrokeThickness="1" Height="65" Width="20" Data="M0,0 A 0,10 0 1 1 0,60 L 0,60 H 15 L 15,60 A 0,10 0 1 1 15,0 L 15,0 V 0" HorizontalAlignment="Center" Canvas.Top="-65.014" VerticalAlignment="Top" Canvas.Left="115" Stretch="Fill">                    <Path.Fill>                        <LinearGradientBrush StartPoint="1,1" EndPoint="0.3,1">                            <GradientStop Color="DarkGray" Offset="0.0" />                            <GradientStop Color="Silver" Offset="0.25" />                            <GradientStop Color="White" Offset="0.5" />                            <GradientStop Color="Silver" Offset="0.75" />                            <GradientStop Color="DarkGray" Offset="1" />                        </LinearGradientBrush>                    </Path.Fill>                </Path>                <Path Stroke="Silver" StrokeThickness="1" Height="15" Width="33" Data="M0,0 A 0,10 0 1 1 0,33 L 0,33 H 15 L 15,33 A 0,10 0 1 1 15,0 L 15,0 V 0" HorizontalAlignment="Left" Canvas.Top="-15.014" VerticalAlignment="Center" Canvas.Left="108.5" Stretch="Fill">                    <Path.Fill>                        <LinearGradientBrush StartPoint="0,1" EndPoint="1,1">                            <GradientStop Color="Gray" Offset="0.0" />                            <GradientStop Color="White" Offset="0.15" />                            <GradientStop Color="DarkGray" Offset="0.5" />                            <GradientStop Color="White" Offset="0.85" />                            <GradientStop Color="Gray" Offset="1" />                        </LinearGradientBrush>                    </Path.Fill>                </Path>                <Path Stroke="Silver" StrokeThickness="1" Height="15" Width="33" Data="M0,0 A 0,10 0 1 1 0,33 L 0,33 H 15 L 15,33 A 0,10 0 1 1 15,0 L 15,0 V 0" HorizontalAlignment="Center" Canvas.Top="-78.5" VerticalAlignment="Center" Canvas.Left="108.5" Stretch="Fill">                    <Path.Fill>                        <LinearGradientBrush StartPoint="1,1" EndPoint="0,0">                            <GradientStop Color="Gray" Offset="0.0" />                            <GradientStop Color="DarkGray" Offset="0.15" />                            <GradientStop Color="White" Offset="0.5" />                            <GradientStop Color="DarkGray" Offset="0.85" />                            <GradientStop Color="Gray" Offset="1" />                        </LinearGradientBrush>                    </Path.Fill>                </Path>                <Ellipse Width="3" Height="3" Canvas.Left="115" Canvas.Top="-9" RenderTransformOrigin="0.625,-0.25" HorizontalAlignment="Center" VerticalAlignment="Top">                    <Ellipse.Fill>                        <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">                            <GradientStop Color="Black" Offset="0.0" />                            <GradientStop Color="White" Offset="0.5" />                            <GradientStop Color="Black" Offset="1" />                        </LinearGradientBrush>                    </Ellipse.Fill>                </Ellipse>                <Ellipse Width="3" Height="3" Canvas.Left="132" Canvas.Top="-9" RenderTransformOrigin="0.625,-0.25" HorizontalAlignment="Center" VerticalAlignment="Top">                    <Ellipse.Fill>                        <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">                            <GradientStop Color="Black" Offset="0.0" />                            <GradientStop Color="White" Offset="0.5" />                            <GradientStop Color="Black" Offset="1" />                        </LinearGradientBrush>                    </Ellipse.Fill>                </Ellipse>            </Canvas>            <!--PUF2Arm-->            <Canvas Width="33" Height="65" Canvas.Top="25" Canvas.Left="322" Visibility="{Binding PufName, ElementName=pufControl,Converter={StaticResource stringToVisibility1}}" RenderTransformOrigin="0.5,0.5">                <Canvas.RenderTransform>                    <TransformGroup>                        <ScaleTransform/>                        <SkewTransform/>                        <RotateTransform Angle="-180"/>                        <TranslateTransform/>                    </TransformGroup>                </Canvas.RenderTransform>                <Path Stroke="Silver" StrokeThickness="1" Height="65" Width="20" Data="M0,0 A 0,10 0 1 1 0,60 L 0,60 H 15 L 15,60 A 0,10 0 1 1 15,0 L 15,0 V 0" HorizontalAlignment="Center" Canvas.Top="-65.014" VerticalAlignment="Top" Canvas.Left="115" Stretch="Fill">                    <Path.Fill>                        <LinearGradientBrush StartPoint="1,1" EndPoint="0.3,1">                            <GradientStop Color="DarkGray" Offset="0.0" />                            <GradientStop Color="Silver" Offset="0.25" />                            <GradientStop Color="White" Offset="0.5" />                            <GradientStop Color="Silver" Offset="0.75" />                            <GradientStop Color="DarkGray" Offset="1" />                        </LinearGradientBrush>                    </Path.Fill>                </Path>                <Path Stroke="Silver" StrokeThickness="1" Height="15" Width="33" Data="M0,0 A 0,10 0 1 1 0,33 L 0,33 H 15 L 15,33 A 0,10 0 1 1 15,0 L 15,0 V 0" HorizontalAlignment="Left" Canvas.Top="-15.014" VerticalAlignment="Center" Canvas.Left="108.5" Stretch="Fill">                    <Path.Fill>                        <LinearGradientBrush StartPoint="0,1" EndPoint="1,1">                            <GradientStop Color="Gray" Offset="0.0" />                            <GradientStop Color="White" Offset="0.15" />                            <GradientStop Color="DarkGray" Offset="0.5" />                            <GradientStop Color="White" Offset="0.85" />                            <GradientStop Color="Gray" Offset="1" />                        </LinearGradientBrush>                    </Path.Fill>                </Path>                <Path Stroke="Silver" StrokeThickness="1" Height="15" Width="33" Data="M0,0 A 0,10 0 1 1 0,33 L 0,33 H 15 L 15,33 A 0,10 0 1 1 15,0 L 15,0 V 0" HorizontalAlignment="Center" Canvas.Top="-78.5" VerticalAlignment="Center" Canvas.Left="108.5" Stretch="Fill">                    <Path.Fill>                        <LinearGradientBrush StartPoint="1,1" EndPoint="0,0">                            <GradientStop Color="Gray" Offset="0.0" />                            <GradientStop Color="DarkGray" Offset="0.15" />                            <GradientStop Color="White" Offset="0.5" />                            <GradientStop Color="DarkGray" Offset="0.85" />                            <GradientStop Color="Gray" Offset="1" />                        </LinearGradientBrush>                    </Path.Fill>                </Path>                <Ellipse Width="3" Height="3" Canvas.Left="115" Canvas.Top="-9" RenderTransformOrigin="0.625,-0.25" HorizontalAlignment="Center" VerticalAlignment="Top">                    <Ellipse.Fill>                        <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">                            <GradientStop Color="Black" Offset="0.0" />                            <GradientStop Color="White" Offset="0.5" />                            <GradientStop Color="Black" Offset="1" />                        </LinearGradientBrush>                    </Ellipse.Fill>                </Ellipse>                <Ellipse Width="3" Height="3" Canvas.Left="132" Canvas.Top="-9" RenderTransformOrigin="0.625,-0.25" HorizontalAlignment="Center" VerticalAlignment="Top">                    <Ellipse.Fill>                        <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">                            <GradientStop Color="Black" Offset="0.0" />                            <GradientStop Color="White" Offset="0.5" />                            <GradientStop Color="Black" Offset="1" />                        </LinearGradientBrush>                    </Ellipse.Fill>                </Ellipse>            </Canvas>            <Canvas Width="450" Height="150" RenderTransformOrigin="0.5,0.5">                <Canvas.RenderTransform>                    <TransformGroup>                        <!--PUF旋转-->                        <RotateTransform Angle="{Binding ElementName=pufControl, Path=PufFlipPosition}"/>                    </TransformGroup>                </Canvas.RenderTransform>                <local:PufArmControl Canvas.Left="101" Canvas.Top="65" HorizontalAlignment="Left" VerticalAlignment="Center"/>                <!--PUFA-->                <Viewbox Stretch="Uniform" Width="200" Height="200" Canvas.Top="-40" Canvas.Left="15">                    <Canvas UseLayoutRounding="False"  Width="93.693" Height="112.5" HorizontalAlignment="Left" VerticalAlignment="Top">                        <Canvas  Width="72.522" Height="72.521" Canvas.Left="10.473" Canvas.Top="28.781">                            <Path Data="F1M10.473,65.041C10.473,85.068,26.708,101.302,46.734,101.302L46.734,101.302C66.761,101.302,82.995,85.068,82.995,65.041L82.995,65.041C82.995,45.015,66.761,28.781,46.734,28.781L46.734,28.781C26.708,28.781,10.473,45.015,10.473,65.041" Stretch="Fill" Width="72.522" Height="72.521" Canvas.Left="0" Canvas.Top="0">                                <Path.Fill>                                    <RadialGradientBrush Center="0.5,0.5" RadiusX="0.5" RadiusY="0.5" GradientOrigin="0.5,0.5">                                        <RadialGradientBrush.GradientStops>                                            <GradientStop Color="#FFE5E2DF" Offset="0" />                                            <GradientStop Color="#FFFFFFFF" Offset="0" />                                            <GradientStop Color="#FFADAEB0" Offset="0.52" />                                            <GradientStop Color="sc#1, 0.238698155, 0.250727534, 0.259264916" Offset="0.82" />                                            <GradientStop Color="#FF454F52" Offset="1" />                                        </RadialGradientBrush.GradientStops>                                    </RadialGradientBrush>                                </Path.Fill>                            </Path>                            <Path Data="M46.8477,55.6938C52.0087,55.6938 56.1937,59.8788 56.1937,65.0398 56.1937,70.2008 52.0087,74.3858 46.8477,74.3858 41.6857,74.3858 37.5007,70.2008 37.5007,65.0398 37.5007,59.8788 41.6857,55.6938 46.8477,55.6938z" Stretch="Fill" Stroke="White" StrokeThickness="0.25" Width="18.943" Height="18.942" Canvas.Left="26.903" Canvas.Top="26.788" />                        </Canvas>                        <Canvas Tag="#00000000,#FF008000,Original,0,None" Width="56.555" Height="56.556" Canvas.Left="18.57" Canvas.Top="36.762">                            <Path Data="M46.8477,46.3472C57.1717,46.3472 65.5407,54.7172 65.5407,65.0412 65.5407,75.3652 57.1717,83.7342 46.8477,83.7342 36.5227,83.7342 28.1537,75.3652 28.1537,65.0412 28.1537,54.7172 36.5227,46.3472 46.8477,46.3472z" Stretch="Fill" Stroke="White" StrokeThickness="0.25" Width="37.637" Height="37.637" Canvas.Left="9.459" Canvas.Top="9.46" />                            <Path Data="M46.8477,36.8872C62.3957,36.8872 74.9997,49.4912 74.9997,65.0402 74.9997,80.5882 62.3957,93.1932 46.8477,93.1932 31.2987,93.1932 18.6947,80.5882 18.6947,65.0402 18.6947,49.4912 31.2987,36.8872 46.8477,36.8872z" Stretch="Fill" Stroke="White" StrokeThickness="0.25" Width="56.555" Height="56.556" />                        </Canvas>                    </Canvas>                </Viewbox>                <!--PUFB-->                <Viewbox x:Name="PUFB" Visibility="Visible" Stretch="Uniform" Width="200" Height="200" Canvas.Top="-40" Canvas.Left="238">                    <Canvas UseLayoutRounding="False"  Width="93.693" Height="112.5" HorizontalAlignment="Center" VerticalAlignment="Center">                        <Canvas  Width="72.522" Height="72.521" Canvas.Left="10.473" Canvas.Top="28.781">                            <Path Data="F1M10.473,65.041C10.473,85.068,26.708,101.302,46.734,101.302L46.734,101.302C66.761,101.302,82.995,85.068,82.995,65.041L82.995,65.041C82.995,45.015,66.761,28.781,46.734,28.781L46.734,28.781C26.708,28.781,10.473,45.015,10.473,65.041" Stretch="Fill" Width="72.522" Height="72.521" Canvas.Left="0" Canvas.Top="0">                                <Path.Fill>                                    <RadialGradientBrush Center="0.5,0.5" RadiusX="0.5" RadiusY="0.5" GradientOrigin="0.5,0.5">                                        <RadialGradientBrush.GradientStops>                                            <GradientStop Color="#FFE5E2DF" Offset="0" />                                            <GradientStop Color="#FFFFFFFF" Offset="0" />                                            <GradientStop Color="#FFADAEB0" Offset="0.52" />                                            <GradientStop Color="sc#1, 0.238698155, 0.250727534, 0.259264916" Offset="0.82" />                                            <GradientStop Color="#FF454F52" Offset="1" />                                        </RadialGradientBrush.GradientStops>                                    </RadialGradientBrush>                                </Path.Fill>                            </Path>                            <Path Data="M46.8477,55.6938C52.0087,55.6938 56.1937,59.8788 56.1937,65.0398 56.1937,70.2008 52.0087,74.3858 46.8477,74.3858 41.6857,74.3858 37.5007,70.2008 37.5007,65.0398 37.5007,59.8788 41.6857,55.6938 46.8477,55.6938z" Stretch="Fill" Stroke="White" StrokeThickness="0.25" Width="18.943" Height="18.942" Canvas.Left="26.903" Canvas.Top="26.788" />                        </Canvas>                        <Canvas Tag="#00000000,#FF008000,Original,0,None" Width="56.555" Height="56.556" Canvas.Left="18.57" Canvas.Top="36.762">                            <Path Data="M46.8477,46.3472C57.1717,46.3472 65.5407,54.7172 65.5407,65.0412 65.5407,75.3652 57.1717,83.7342 46.8477,83.7342 36.5227,83.7342 28.1537,75.3652 28.1537,65.0412 28.1537,54.7172 36.5227,46.3472 46.8477,46.3472z" Stretch="Fill" Stroke="White" StrokeThickness="0.25" Width="37.637" Height="37.637" Canvas.Left="9.459" Canvas.Top="9.46" />                            <Path Data="M46.8477,36.8872C62.3957,36.8872 74.9997,49.4912 74.9997,65.0402 74.9997,80.5882 62.3957,93.1932 46.8477,93.1932 31.2987,93.1932 18.6947,80.5882 18.6947,65.0402 18.6947,49.4912 31.2987,36.8872 46.8477,36.8872z" Stretch="Fill" Stroke="White" StrokeThickness="0.25" Width="56.555" Height="56.556" />                        </Canvas>                    </Canvas>                </Viewbox>                <StackPanel Canvas.Top="65" Canvas.Left="155"  Panel.ZIndex="99">                    <TextBlock  FontSize="20" Text="{Binding PufName, ElementName=pufControl}" TextAlignment="Center" Width="130"/>                </StackPanel>                <TextBlock Text="A"   FontSize="22" Foreground="Black"  Canvas.Left="330" Canvas.Top="60" HorizontalAlignment="Left" VerticalAlignment="Top"/>                <TextBlock Text="B" FontSize="22" Foreground="Black" Canvas.Left="108" Canvas.Top="65" Height="23" Width="14" HorizontalAlignment="Center" VerticalAlignment="Top"/>                <Viewbox Width="126" Height="126"  Canvas.Left="52" Canvas.Top="12">                    <local:WaferCtrl WaferData="{Binding ElementName=pufControl, Path=RobotWaferB}"/>                </Viewbox>                <Viewbox Width="126" Height="126"  Canvas.Left="275" Canvas.Top="12">                    <local:WaferCtrl WaferData="{Binding ElementName=pufControl, Path=RobotWaferA}"/>                </Viewbox>            </Canvas>        </Canvas>    </Viewbox></UserControl>
 |