WPF仪表盘控件
后台代码倒是不多,关键在于xaml画表盘
先上效果图:
<UserControl x:Class="CLInstrument.InstrumentControl"
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"
mc:Ignorable="d" d:DesignHeight="350" d:DesignWidth="300" SnapsToDevicePixels="True">
<UserControl.Resources>
<SolidColorBrush x:Key="pathMain" Color="Gray" ></SolidColorBrush>
<SolidColorBrush x:Key="pathSub" Color="#FFB4A193" ></SolidColorBrush>
<SolidColorBrush x:Key="pointerColor" Color="Black"></SolidColorBrush>
<SolidColorBrush x:Key="bottomSpaceColor" Color="SkyBlue"></SolidColorBrush>
<SolidColorBrush x:Key="lowColor" Color="YellowGreen"></SolidColorBrush>
<SolidColorBrush x:Key="normalColor" Color="Yellow"></SolidColorBrush>
<SolidColorBrush x:Key="hightColor" Color="Red"></SolidColorBrush>
<SolidColorBrush x:Key="mainColor" Color="LightBlue"></SolidColorBrush>
<SolidColorBrush x:Key="centerColor" Color="Black"></SolidColorBrush>
<SolidColorBrush x:Key="fontColor" Color="Black"></SolidColorBrush>
<LinearGradientBrush x:Key="firstColor" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF8B8787" Offset="1"/>
<GradientStop Color="White"/>
</LinearGradientBrush>
<SolidColorBrush x:Key="viewColor" Color="YellowGreen"></SolidColorBrush>
</UserControl.Resources>
<Viewbox>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="300"></RowDefinition>
<RowDefinition Height="50"></RowDefinition>
</Grid.RowDefinitions>
<Canvas x:Name="canvas" Height="300" Width="300" UseLayoutRounding="True" SnapsToDevicePixels="True">
<Ellipse Name="firstEllipse" Height="300" Fill="{StaticResource firstColor}" Width="300" Canvas.Left="0" Canvas.Top="0" Stretch="Fill" Panel.ZIndex="0">
<!--<Ellipse.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF8B8787" Offset="1"/>
<GradientStop Color="White"/>
</LinearGradientBrush>
</Ellipse.Fill>-->
<!--<Ellipse.CacheMode>
<BitmapCache/>
</Ellipse.CacheMode>-->
</Ellipse>
<Ellipse Height="270" Width="270" Canvas.Left="15" Canvas.Top="15" Stretch="Fill" Fill="{StaticResource bottomSpaceColor}" Panel.ZIndex="1">
<!--<Ellipse.CacheMode>
<BitmapCache/>
</Ellipse.CacheMode>-->
</Ellipse>
<Rectangle Name="icoRect" Width="60" Height="40" Canvas.Left="120" Canvas.Top="66" Panel.ZIndex="5">
<Rectangle.Fill>
<ImageBrush ImageSource="Images/cpu.png"/>
</Rectangle.Fill>
</Rectangle>
<TextBlock x:Name="viewText" Text="CPU使用率" Foreground="{StaticResource fontColor}" Canvas.Left="120" Canvas.Top="216" Panel.ZIndex="5" FontWeight="Bold"></TextBlock>
<Ellipse x:Name="viewEllipse" Fill="{StaticResource viewColor}" Width="20" Height="20" Panel.ZIndex="5" Canvas.Left="140" Canvas.Top="240">
<!--<Ellipse.Effect>
<BlurEffect Radius="12" RenderingBias="Performance"></BlurEffect>
</Ellipse.Effect>-->
</Ellipse>
<!--低于区域-->
<Path Stroke="Transparent" Fill="{StaticResource lowColor}" StrokeThickness="0" Panel.ZIndex="2">
<!--<Path.CacheMode>
<BitmapCache/>
</Path.CacheMode>-->
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="90,253.923">
<LineSegment Point="82.5,266.9134"></LineSegment>
<ArcSegment Point="33.08657,82.5" Size="135,135" RotationAngle="90" SweepDirection="Clockwise"/>
<LineSegment Point="46.07695,90"/>
<ArcSegment Point="90,253.923" Size="120,120" RotationAngle="90" SweepDirection="Counterclockwise"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<!--正常区域-->
<Path Stroke="Transparent" Fill="{StaticResource normalColor}" StrokeThickness="0" Panel.ZIndex="2">
<!--<Path.CacheMode>
<BitmapCache/>
</Path.CacheMode>-->
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="46.07695,90">
<LineSegment Point="33.08657,82.5"></LineSegment>
<ArcSegment Point="266.9134,217.5" Size="135,135" RotationAngle="180" SweepDirection="Clockwise"/>
<LineSegment Point="253.923,210"/>
<ArcSegment Point="46.07695,90" Size="120,120" RotationAngle="180" SweepDirection="Counterclockwise"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<!--超出区域-->
<Path Stroke="Transparent" Fill="{StaticResource hightColor}" StrokeThickness="0" Panel.ZIndex="2">
<!--<Path.CacheMode>
<BitmapCache/>
</Path.CacheMode>-->
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="253.923,210">
<LineSegment Point="266.9134,217.5"></LineSegment>
<ArcSegment Point="217.5,266.9134" Size="135,135" RotationAngle="30" SweepDirection="Clockwise"/>
<LineSegment Point="210,253.923"/>
<ArcSegment Point="253.923,210" Size="120,120" RotationAngle="30" SweepDirection="Counterclockwise"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Ellipse Height="240" Width="240" Canvas.Left="30" Canvas.Top="30" Stretch="Fill" Fill="{StaticResource mainColor}" Panel.ZIndex="1">
<!--<Ellipse.CacheMode>
<BitmapCache/>
</Ellipse.CacheMode>-->
</Ellipse>
<Ellipse Height="10" Width="10" Canvas.Left="145" Canvas.Top="145" Stretch="Fill" Fill="White" Panel.ZIndex="10">
<!--<Ellipse.CacheMode>
<BitmapCache/>
</Ellipse.CacheMode>-->
</Ellipse>
<Ellipse Height="30" Width="30" Canvas.Left="135" Canvas.Top="135" Stretch="Fill" Fill="{StaticResource centerColor}" Panel.ZIndex="9">
<!--<Ellipse.CacheMode>
<BitmapCache/>
</Ellipse.CacheMode>-->
</Ellipse>
<!--指针-->
<Path Name="pointerPath" Fill="{StaticResource pointerColor}" Stroke="Transparent" StrokeThickness="0" Panel.ZIndex="8" RenderTransformOrigin="0.939,0.6">
<Path.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform Angle="0"/>
<TranslateTransform/>
</TransformGroup>
</Path.RenderTransform>
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="160,167.3205">
<ArcSegment Point="130,150" Size="40,40" IsLargeArc="False" RotationAngle="60" SweepDirection="Clockwise"/>
<LineSegment Point="92.5,249.5929"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<!--主刻度-->
<Path Stroke="Transparent" Fill="{StaticResource pathMain}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="89.5,254.7891">
<LineSegment Point="83,266.0474"/>
<LineSegment Point="80.9849,264.8604"/>
<LineSegment Point="87.68039,253.7173"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<TextBlock Canvas.Left="88" Canvas.Top="237" Foreground="{StaticResource fontColor}" Text="0" Panel.ZIndex="6"></TextBlock>
<TextBlock Canvas.Left="49" Canvas.Top="199" Foreground="{StaticResource fontColor}" Text="10" Panel.ZIndex="6"></TextBlock>
<TextBlock Canvas.Left="34" Canvas.Top="141" Foreground="{StaticResource fontColor}" Text="20" Panel.ZIndex="6"></TextBlock>
<TextBlock Canvas.Left="50" Canvas.Top="83" Foreground="{StaticResource fontColor}" Text="30" Panel.ZIndex="6"></TextBlock>
<TextBlock Canvas.Left="87" Canvas.Top="45" Foreground="{StaticResource fontColor}" Text="40" Panel.ZIndex="6"></TextBlock>
<TextBlock Canvas.Left="144" Canvas.Top="30" Foreground="{StaticResource fontColor}" Text="50" Panel.ZIndex="6"></TextBlock>
<TextBlock Canvas.Left="199" Canvas.Top="45" Foreground="{StaticResource fontColor}" Text="60" Panel.ZIndex="6"></TextBlock>
<TextBlock Canvas.Left="237" Canvas.Top="83" Foreground="{StaticResource fontColor}" Text="70" Panel.ZIndex="6"></TextBlock>
<TextBlock Canvas.Left="254" Canvas.Top="143" Foreground="{StaticResource fontColor}" Text="80" Panel.ZIndex="6"></TextBlock>
<TextBlock Canvas.Left="237" Canvas.Top="199" Foreground="{StaticResource fontColor}" Text="90" Panel.ZIndex="6"></TextBlock>
<TextBlock Canvas.Left="194" Canvas.Top="237" Foreground="{StaticResource fontColor}" Text="100" Panel.ZIndex="6"></TextBlock>
<Path Stroke="Transparent" Fill="{StaticResource pathMain}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="45.21093,210.5">
<LineSegment Point="33.9526,217"/>
<LineSegment Point="32.80096,214.9645"/>
<LineSegment Point="44.17101,208.662"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Stroke="Transparent" Fill="{StaticResource pathMain}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="29,150">
<LineSegment Point="16,150"/>
<LineSegment Point="16.02042,147.6614"/>
<LineSegment Point="29.01843,147.8883"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Stroke="Transparent" Fill="{StaticResource pathMain}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="45.21093,89.5">
<LineSegment Point="33.9526,83"/>
<LineSegment Point="35.13958,80.9849"/>
<LineSegment Point="46.28275,87.68039"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Stroke="Transparent" Fill="{StaticResource pathMain}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="89.5,45.21093">
<LineSegment Point="83,33.9526"/>
<LineSegment Point="85.03551,32.80096"/>
<LineSegment Point="91.33804,44.17101"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Stroke="Transparent" Fill="{StaticResource pathMain}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="150,29">
<LineSegment Point="150,16"/>
<LineSegment Point="152.3386,16.02042"/>
<LineSegment Point="152.1117,29.01843"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Stroke="Transparent" Fill="{StaticResource pathMain}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="210.5,45.21093">
<LineSegment Point="217,33.9526"/>
<LineSegment Point="219.0151,35.13958"/>
<LineSegment Point="212.3196,46.28275"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Stroke="Transparent" Fill="{StaticResource pathMain}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="254.7891,89.5">
<LineSegment Point="266.0474,83"/>
<LineSegment Point="267.199,85.03551"/>
<LineSegment Point="255.829,91.33804"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Stroke="Transparent" Fill="{StaticResource pathMain}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="271,150">
<LineSegment Point="284,150"/>
<LineSegment Point="283.9796,152.3386"/>
<LineSegment Point="270.9816,152.1117"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Stroke="Transparent" Fill="{StaticResource pathMain}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="254.7891,210.5">
<LineSegment Point="266.0474,217"/>
<LineSegment Point="264.8604,219.0151"/>
<LineSegment Point="253.7173,212.3196"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Stroke="Transparent" Fill="{StaticResource pathMain}" StrokeThickness="0" Panel.ZIndex="5" RenderTransformOrigin="0.5,0.5">
<Path.RenderTransform>
<TransformGroup>
<RotateTransform Angle="-0.6"/>
</TransformGroup>
</Path.RenderTransform>
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="211,254.7891">
<LineSegment Point="217.4,266.0474"/>
<LineSegment Point="215.6645,267.199"/>
<LineSegment Point="209.262,255.829"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<!--副刻度-->
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="74.4696,253.9587">
<LineSegment Point="71.23678,258.4083"/>
<LineSegment Point="69.35679,257.0172"/>
<LineSegment Point="72.66677,252.6247"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="64.01672,245.4941">
<LineSegment Point="60.3365,249.5814"/>
<LineSegment Point="58.61222,248.0014"/>
<LineSegment Point="62.36321,243.9789"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="54.50589,235.9833">
<LineSegment Point="50.41859,239.6635"/>
<LineSegment Point="48.86892,237.9119"/>
<LineSegment Point="53.01982,234.3036"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="46.04131,225.5304">
<LineSegment Point="41.59172,228.7632"/>
<LineSegment Point="40.23363,226.8593"/>
<LineSegment Point="44.73896,223.7046"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="32.60941,202.2657">
<LineSegment Point="27.58491,204.5027"/>
<LineSegment Point="26.65235,202.358"/>
<LineSegment Point="31.71513,200.209"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="27.78924,189.7087">
<LineSegment Point="22.55843,191.4083"/>
<LineSegment Point="21.85516,189.1778"/>
<LineSegment Point="27.11484,187.5698"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="24.30804,176.7166">
<LineSegment Point="18.92822,177.8602"/>
<LineSegment Point="18.46196,175.5684"/>
<LineSegment Point="23.86091,174.519"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="22.20393,163.4319">
<LineSegment Point="16.73407,164.0068"/>
<LineSegment Point="16.5099,161.6789"/>
<LineSegment Point="21.98898,161.1995"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="22.20393,136.5681">
<LineSegment Point="16.73407,135.9932"/>
<LineSegment Point="16.99881,133.6695"/>
<LineSegment Point="22.45782,134.3398"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="24.30804,123.2833">
<LineSegment Point="18.92822,122.1398"/>
<LineSegment Point="19.43442,119.8566"/>
<LineSegment Point="24.79345,121.0938"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="27.78924,110.2913">
<LineSegment Point="22.55843,108.5917"/>
<LineSegment Point="23.30051,106.3739"/>
<LineSegment Point="28.50086,108.1645"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="32.60941,97.73434">
<LineSegment Point="27.58491,95.49729"/>
<LineSegment Point="28.55476,93.36916"/>
<LineSegment Point="33.53945,95.69356"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="46.04131,74.4696">
<LineSegment Point="41.59172,71.23678"/>
<LineSegment Point="42.98284,69.35679"/>
<LineSegment Point="47.37534,72.66677"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="54.50589,64.01672">
<LineSegment Point="50.41859,60.3365"/>
<LineSegment Point="51.9986,58.61222"/>
<LineSegment Point="56.02105,62.36321"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="64.01672,54.50589">
<LineSegment Point="60.3365,50.41859"/>
<LineSegment Point="62.08809,48.86892"/>
<LineSegment Point="65.69641,53.01982"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="74.4696,46.04131">
<LineSegment Point="71.23678,41.59172"/>
<LineSegment Point="73.14075,40.23363"/>
<LineSegment Point="76.29543,44.73896"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="97.73434,32.60941">
<LineSegment Point="95.49729,27.58491"/>
<LineSegment Point="97.64203,26.65235"/>
<LineSegment Point="99.79105,31.71513"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="110.2913,27.78924">
<LineSegment Point="108.5917,22.55843"/>
<LineSegment Point="110.8222,21.85516"/>
<LineSegment Point="112.4302,27.11484"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="123.2833,24.30804">
<LineSegment Point="122.1398,18.92822"/>
<LineSegment Point="124.4316,18.46196"/>
<LineSegment Point="125.481,23.86091"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="136.5681,22.20393">
<LineSegment Point="135.9932,16.73407"/>
<LineSegment Point="138.3211,16.5099"/>
<LineSegment Point="138.8005,21.98898"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="163.4319,22.20393">
<LineSegment Point="164.0068,16.73407"/>
<LineSegment Point="166.3305,16.99881"/>
<LineSegment Point="165.6602,22.45782"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="176.7166,24.30804">
<LineSegment Point="177.8602,18.92822"/>
<LineSegment Point="180.1434,19.43442"/>
<LineSegment Point="178.9062,24.79345"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="189.7087,27.78924">
<LineSegment Point="191.4083,22.55843"/>
<LineSegment Point="193.6261,23.30051"/>
<LineSegment Point="191.8355,28.50086"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="202.2657,32.60941">
<LineSegment Point="204.5027,27.58491"/>
<LineSegment Point="206.6308,28.55476"/>
<LineSegment Point="204.3064,33.53945"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="225.5304,46.04131">
<LineSegment Point="228.7632,41.59172"/>
<LineSegment Point="230.6432,42.98284"/>
<LineSegment Point="227.3332,47.37534"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="235.9833,54.50589">
<LineSegment Point="239.6635,50.41859"/>
<LineSegment Point="241.3878,51.9986"/>
<LineSegment Point="237.6368,56.02105"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="245.4941,64.01672">
<LineSegment Point="249.5814,60.3365"/>
<LineSegment Point="251.1311,62.08809"/>
<LineSegment Point="246.9802,65.69641"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="253.9587,74.4696">
<LineSegment Point="258.4083,71.23678"/>
<LineSegment Point="259.7664,73.14075"/>
<LineSegment Point="255.261,76.29543"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="267.3906,97.73434">
<LineSegment Point="272.4151,95.49729"/>
<LineSegment Point="273.3477,97.64203"/>
<LineSegment Point="268.2849,99.79105"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="272.2108,110.2913">
<LineSegment Point="277.4416,108.5917"/>
<LineSegment Point="278.1448,110.8222"/>
<LineSegment Point="272.8852,112.4302"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="275.692,123.2833">
<LineSegment Point="281.0718,122.1398"/>
<LineSegment Point="281.538,124.4316"/>
<LineSegment Point="276.1391,125.481"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="277.7961,136.5681">
<LineSegment Point="283.2659,135.9932"/>
<LineSegment Point="283.4901,138.3211"/>
<LineSegment Point="278.011,138.8005"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="277.7961,163.4319">
<LineSegment Point="283.2659,164.0068"/>
<LineSegment Point="283.0012,166.3305"/>
<LineSegment Point="277.5422,165.6602"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="275.692,176.7166">
<LineSegment Point="281.0718,177.8602"/>
<LineSegment Point="280.5656,180.1434"/>
<LineSegment Point="275.2065,178.9062"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="272.2108,189.7087">
<LineSegment Point="277.4416,191.4083"/>
<LineSegment Point="276.6995,193.6261"/>
<LineSegment Point="271.4991,191.8355"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="267.3906,202.2657">
<LineSegment Point="272.4151,204.5027"/>
<LineSegment Point="271.4453,206.6308"/>
<LineSegment Point="266.4605,204.3064"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="253.9587,225.5304">
<LineSegment Point="258.4083,228.7632"/>
<LineSegment Point="257.0172,230.6432"/>
<LineSegment Point="252.6247,227.3332"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="245.4941,235.9833">
<LineSegment Point="249.5814,239.6635"/>
<LineSegment Point="248.0014,241.3878"/>
<LineSegment Point="243.9789,237.6368"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="235.9833,245.4941">
<LineSegment Point="239.6635,249.5814"/>
<LineSegment Point="237.9119,251.1311"/>
<LineSegment Point="234.3036,246.9802"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
<Path Tag="pathsub" Stroke="Transparent" Fill="{StaticResource pathSub}" StrokeThickness="0" Panel.ZIndex="5">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="225.5304,253.9587">
<LineSegment Point="228.7632,258.4083"/>
<LineSegment Point="226.8593,259.7664"/>
<LineSegment Point="223.7046,255.261"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
</Canvas>
<Rectangle Grid.Row="1" Name="rectangle" RenderTransformOrigin="0.5,0.5" Margin="0,0,0,0">
<Rectangle.Fill>
<VisualBrush Visual="{Binding ElementName=canvas}"></VisualBrush>
</Rectangle.Fill>
<Rectangle.OpacityMask>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,0.5">
<GradientStop Offset="0.01" Color="Transparent"></GradientStop>
<GradientStop Offset="0.01" Color="#44000000"></GradientStop>
</LinearGradientBrush>
</Rectangle.OpacityMask>
<Rectangle.RenderTransform>
<ScaleTransform ScaleY="-1"></ScaleTransform>
</Rectangle.RenderTransform>
</Rectangle>
</Grid>
</Viewbox>
</UserControl>
后台代码:
public class ColorChangedEventArgs : EventArgs
{
public string name { get; set; }
public Color color { get; set; }
public ColorChangedEventArgs(string name, Color color)
{
this.name = name;
this.color = color;
}
}
public class LinearGradientBrushChangedEventArgs : EventArgs
{
public string name { get; set; }
public LinearGradientBrush brush { get; set; }
public LinearGradientBrushChangedEventArgs(string name, LinearGradientBrush brush)
{
this.name = name;
this.brush = brush;
}
}
public class AngleChangedEventArgs : EventArgs
{
public float angle { get; set; }
public float oldAngle { get; set; }
public AngleChangedEventArgs(float angle, float old)
{
this.angle = angle;
this.oldAngle = old;
}
}
public class StringChangedEventArgs : EventArgs
{
public string name { get; set; }
public string text { get; set; }
public StringChangedEventArgs(string name, string text)
{
this.name = name;
this.text = text;
}
}
/// <summary>
/// InstrumentControl.xaml 的交互逻辑
/// </summary>
public partial class InstrumentControl : UserControl
{
public static EventHandler<ColorChangedEventArgs> WhenPropertyChanged;
public static EventHandler<AngleChangedEventArgs> WhenAnglePropertyChanged;
public static EventHandler<StringChangedEventArgs> WhenStringPropertyChanged;
public static EventHandler<LinearGradientBrushChangedEventArgs> WhenBrushChanged;
public string ImagePath
{
get { return GetValue(ImagePathProperty).ToString(); }
set { SetValue(ImagePathProperty, value); }
}
public string ShowText
{
get { return GetValue(ShowTextProperty).ToString(); }
set { SetValue(ShowTextProperty, value); }
}
/// <summary>
/// 指针颜色
/// </summary>
public Color PointerColor
{
get { return (Color)GetValue(PointerColorProperty); }
set { SetValue(PointerColorProperty, value); }
}
/// <summary>
/// 非指示区域处颜色
/// </summary>
public Color BottomSpaceColor
{
get { return (Color)GetValue(BottomSpaceColorProperty); }
set { SetValue(BottomSpaceColorProperty, value); }
}
/// <summary>
/// 处于低值时的颜色
/// </summary>
public Color LowColor
{
get { return (Color)GetValue(LowColorProperty); }
set { SetValue(LowColorProperty, value); }
}
/// <summary>
/// 正常值颜色
/// </summary>
public Color NormalColor
{
get { return (Color)GetValue(NormalColorProperty); }
set { SetValue(NormalColorProperty, value); }
}
/// <summary>
/// 高于正常值颜色
/// </summary>
public Color HightColor
{
get { return (Color)GetValue(HightColorProperty); }
set { SetValue(HightColorProperty, value); }
}
/// <summary>
/// 表盘主颜色
/// </summary>
public Color MainColor
{
get { return (Color)GetValue(MainColorProperty); }
set { SetValue(MainColorProperty, value); }
}
/// <summary>
///中心颜色
/// </summary>
public Color CenterColor
{
get { return (Color)GetValue(CenterColorProperty); }
set { SetValue(CenterColorProperty, value); }
}
/// <summary>
/// 字体颜色
/// </summary>
public Color FontColor
{
get { return (Color)GetValue(FontColorProperty); }
set { SetValue(FontColorProperty, value); }
}
/// <summary>
///
/// </summary>
public float Angle
{
get { return (float)GetValue(AngleProperty); }
set { SetValue(AngleProperty, value); }
}
public LinearGradientBrush FirstCircleBrush
{
get { return (LinearGradientBrush)GetValue(FirstCircleBrushProperty); }
set { SetValue(FirstCircleBrushProperty, value); }
}
// Using a DependencyProperty as the backing store for FirstCircleBrush. This enables animation, styling, binding, etc...
public static readonly DependencyProperty FirstCircleBrushProperty =
DependencyProperty.Register("FirstCircleBrush", typeof(LinearGradientBrush), typeof(InstrumentControl), new PropertyMetadata(new LinearGradientBrush(Colors.Gray, Colors.LightGray, 0f), new PropertyChangedCallback(BrushPropertyChangedCallback)), new ValidateValueCallback(IsLinearGradientBrush));
public static DependencyProperty AngleProperty = DependencyProperty.Register("Angle", typeof(float), typeof(InstrumentControl), new FrameworkPropertyMetadata(120f, new PropertyChangedCallback(CenterXPropertyChangedCallback)), new ValidateValueCallback(IsFloat)); //属性默认值
public static DependencyProperty ImagePathProperty = DependencyProperty.Register("ImagePath", typeof(string), typeof(InstrumentControl), new FrameworkPropertyMetadata("Images/cpu.png", new PropertyChangedCallback(StringPropertyChangedCallback))); //属性默认值
public static DependencyProperty ShowTextProperty = DependencyProperty.Register("ShowText", typeof(string), typeof(InstrumentControl), new FrameworkPropertyMetadata("CPU使用率", new PropertyChangedCallback(StringPropertyChangedCallback))); //属性默认值
public static DependencyProperty FontColorProperty = DependencyProperty.Register("FontColor", typeof(Color), typeof(InstrumentControl), new FrameworkPropertyMetadata(Colors.Black, new PropertyChangedCallback(ColorPropertyChangedCallback)), new ValidateValueCallback(IsColor));
public static DependencyProperty CenterColorProperty = DependencyProperty.Register("CenterColor", typeof(Color), typeof(InstrumentControl), new FrameworkPropertyMetadata(Colors.Black, new PropertyChangedCallback(ColorPropertyChangedCallback)), new ValidateValueCallback(IsColor));
public static DependencyProperty MainColorProperty = DependencyProperty.Register("MainColor", typeof(Color), typeof(InstrumentControl), new FrameworkPropertyMetadata(Colors.AliceBlue, new PropertyChangedCallback(ColorPropertyChangedCallback)), new ValidateValueCallback(IsColor)); //属性默认值
//public static DependencyProperty FirstCircleColorProperty = DependencyProperty.Register("FirstCircleColor", typeof(LinearGradientBrush), typeof(InstrumentControl), new FrameworkPropertyMetadata(new LinearGradientBrush(Colors.Gray, Colors.LightGray, 0f), new PropertyChangedCallback(BrushPropertyChangedCallback)), new ValidateValueCallback(IsLinearGradientBrush)); //属性默认值
public static DependencyProperty LowColorProperty = DependencyProperty.Register("LowColor", typeof(Color), typeof(InstrumentControl), new FrameworkPropertyMetadata(Colors.YellowGreen, new PropertyChangedCallback(ColorPropertyChangedCallback)), new ValidateValueCallback(IsColor)); //属性默认值
public static DependencyProperty HightColorProperty = DependencyProperty.Register("HightColor", typeof(Color), typeof(InstrumentControl), new FrameworkPropertyMetadata(Colors.Red, new PropertyChangedCallback(ColorPropertyChangedCallback)), new ValidateValueCallback(IsColor)); //属性默认值
public static DependencyProperty NormalColorProperty = DependencyProperty.Register("NormalColor", typeof(Color), typeof(InstrumentControl), new FrameworkPropertyMetadata(Colors.Yellow, new PropertyChangedCallback(ColorPropertyChangedCallback)), new ValidateValueCallback(IsColor)); //属性默认值
public static DependencyProperty PointerColorProperty = DependencyProperty.Register("PointerColor", typeof(Color), typeof(InstrumentControl), new FrameworkPropertyMetadata(Colors.Black, new PropertyChangedCallback(ColorPropertyChangedCallback)), new ValidateValueCallback(IsColor)); //属性默认值
public static DependencyProperty BottomSpaceColorProperty = DependencyProperty.Register("BottomSpaceColor", typeof(Color), typeof(InstrumentControl), new FrameworkPropertyMetadata(Colors.AliceBlue, new PropertyChangedCallback(ColorPropertyChangedCallback)), new ValidateValueCallback(IsColor)); //属性默认值
public static DependencyProperty MajorTickColorProperty = DependencyProperty.Register("MajorTickColor", typeof(Color), typeof(InstrumentControl), new FrameworkPropertyMetadata(Colors.Gray, new PropertyChangedCallback(ColorPropertyChangedCallback)), new ValidateValueCallback(IsColor)); //属性默认值
public static DependencyProperty MinorTickColorProperty = DependencyProperty.Register("MinorTickColor", typeof(Color), typeof(InstrumentControl), new FrameworkPropertyMetadata(Colors.Chocolate, new PropertyChangedCallback(ColorPropertyChangedCallback)), new ValidateValueCallback(IsColor)); //属性默认值
private static bool IsLinearGradientBrush(object value)
{
// LinearGradientBrush brush = value as LinearGradientBrush;
return value is LinearGradientBrush;
}
private static void BrushPropertyChangedCallback(DependencyObject dp, DependencyPropertyChangedEventArgs e)
{
if (WhenBrushChanged != null)
{
WhenBrushChanged(dp, new LinearGradientBrushChangedEventArgs(e.Property.Name, (LinearGradientBrush)e.NewValue));
}
}
private static bool IsColor(object value)
{
// LinearGradientBrush brush = value as LinearGradientBrush;
return value is Color;
}
private static void ColorPropertyChangedCallback(DependencyObject dp, DependencyPropertyChangedEventArgs e)
{
if (WhenPropertyChanged != null)
{
WhenPropertyChanged(dp, new ColorChangedEventArgs(e.Property.Name, (Color)e.NewValue));
}
//fir
// LinearGradientBrush brush = value as LinearGradientBrush;
// return value is LinearGradientBrush;
}
private static void StringPropertyChangedCallback(DependencyObject dp, DependencyPropertyChangedEventArgs e)
{
if (WhenStringPropertyChanged != null)
{
WhenStringPropertyChanged(dp, new StringChangedEventArgs(e.Property.Name, e.NewValue.ToString()));
}
}
private static bool IsFloat(object value)
{
// LinearGradientBrush brush = value as LinearGradientBrush;
float a = 0f;
return float.TryParse(value.ToString(), out a);
}
private static void CenterXPropertyChangedCallback(DependencyObject dp, DependencyPropertyChangedEventArgs e)
{
if (WhenAnglePropertyChanged != null)
{
WhenAnglePropertyChanged(dp, new AngleChangedEventArgs((float)e.NewValue, (float)e.OldValue));
}
}
public InstrumentControl()
{
InitializeComponent();
this.Loaded += InstrumentControl_Loaded;
RenderOptions.SetBitmapScalingMode(canvas, BitmapScalingMode.LowQuality);
WhenPropertyChanged += new EventHandler<ColorChangedEventArgs>(ColorChanged);
WhenAnglePropertyChanged += new EventHandler<AngleChangedEventArgs>(AngleChanged);
WhenStringPropertyChanged += new EventHandler<StringChangedEventArgs>(StringChanged);
WhenBrushChanged += new EventHandler<LinearGradientBrushChangedEventArgs>(BrushChanged);
}
~InstrumentControl() { }
private void StringChanged(object o, StringChangedEventArgs e)
{
if (o is InstrumentControl)
{
InstrumentControl instrumentControl = o as InstrumentControl;
switch (e.name)
{
case "ImagePath":
ImageBrush brush = new ImageBrush(new BitmapImage(new Uri(ImagePath, UriKind.RelativeOrAbsolute)));
instrumentControl.icoRect.Fill = brush;
break;
case "ShowText":
instrumentControl.viewText.Text = e.text;
break;
}
}
}
private void AngleChanged(object o, AngleChangedEventArgs e)
{
if (o is InstrumentControl)
{
InstrumentControl instrumentControl = o as InstrumentControl;
SolidColorBrush solidBrush = instrumentControl.FindResource("viewColor") as SolidColorBrush;
if (e.angle <= 90)//low lowColor
{
SolidColorBrush solidBrush2 = instrumentControl.FindResource("lowColor") as SolidColorBrush;
solidBrush.Color = solidBrush2.Color;
}
else if (e.angle >= 270) //hight hightColor
{
SolidColorBrush solidBrush2 = instrumentControl.FindResource("hightColor") as SolidColorBrush;
solidBrush.Color = solidBrush2.Color;
}
else //normal normalColor
{
SolidColorBrush solidBrush2 = instrumentControl.FindResource("normalColor") as SolidColorBrush;
solidBrush.Color = solidBrush2.Color;
}
//instrumentControl.viewEllipse.Fill = solidBrush;
Storyboard storyboard = new Storyboard();
//storyboard.Completed += storyboard_Completed;
storyboard.AutoReverse = false;
storyboard.FillBehavior = FillBehavior.HoldEnd;
DoubleAnimation doubleAnimationX = new DoubleAnimation(e.oldAngle, e.angle, new Duration(TimeSpan.FromMilliseconds(500)));
Storyboard.SetTarget(doubleAnimationX, instrumentControl.pointerPath);
Storyboard.SetTargetProperty(doubleAnimationX, new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)"));
storyboard.Children.Add(doubleAnimationX);
storyboard.AutoReverse = false;
storyboard.AccelerationRatio = 0.3;
storyboard.DecelerationRatio = 0.2;
storyboard.Begin();
}
}
void storyboard_Completed(object sender, EventArgs e)
{
// storyboard.Completed -= storyboard_Completed;
//storyboard.Stop();
if (sender is ClockGroup)
{
ClockGroup c = sender as ClockGroup;
Storyboard storybord = c.Timeline as Storyboard;
//Storyboard storybord =(StopStoryboard)sender;
storybord.Stop();
storybord = null;
}
//throw new NotImplementedException();
}
void InstrumentControl_Loaded(object sender, RoutedEventArgs e)
{
}
private void BrushChanged(object o, LinearGradientBrushChangedEventArgs e)
{
if (o is InstrumentControl)
{
InstrumentControl instrumentControl = o as InstrumentControl;
switch (e.name)
{
case "FirstCircleBrush":
LinearGradientBrush solidBrush = instrumentControl.FindResource("firstColor") as LinearGradientBrush;
solidBrush = e.brush;
instrumentControl.firstEllipse.Fill = solidBrush;
break;
}
}
}
private void ColorChanged(object o, ColorChangedEventArgs e)
{
if (o is InstrumentControl)
{
InstrumentControl instrumentControl = o as InstrumentControl;
switch (e.name)
{
case "MajorTickColor":
SolidColorBrush solidBrush = instrumentControl.FindResource("pathMain") as SolidColorBrush;
solidBrush.Color = e.color;
break;
//case "FirstCircleColor":
// SolidColorBrush solidBrush = instrumentControl.FindResource("firstColor") as SolidColorBrush;
// solidBrush.Color = e.color;
// break;
case "MinorTickColor":
SolidColorBrush solidBrush2 = instrumentControl.FindResource("pathSub") as SolidColorBrush;
solidBrush2.Color = e.color;
break;
case "PointerColor":
SolidColorBrush solidBrush3 = instrumentControl.FindResource("pointerColor") as SolidColorBrush;
solidBrush3.Color = e.color;
break;
case "BottomSpaceColor":
SolidColorBrush bottomSpaceColor = instrumentControl.FindResource("bottomSpaceColor") as SolidColorBrush;
bottomSpaceColor.Color = e.color;
break;
case "LowColor":
SolidColorBrush lowColor = instrumentControl.FindResource("lowColor") as SolidColorBrush;
lowColor.Color = e.color;
break;
case "NormalColor":
SolidColorBrush normalColor = instrumentControl.FindResource("normalColor") as SolidColorBrush;
normalColor.Color = e.color;
break;
case "HightColor":
SolidColorBrush hightColor = instrumentControl.FindResource("hightColor") as SolidColorBrush;
hightColor.Color = e.color;
break;
case "MainColor":
SolidColorBrush mainColor = instrumentControl.FindResource("mainColor") as SolidColorBrush;
mainColor.Color = e.color;
break;
case "CenterColor":
SolidColorBrush centerColor = instrumentControl.FindResource("centerColor") as SolidColorBrush;
centerColor.Color = e.color;
break;
case "FontColor":
SolidColorBrush fontColor = instrumentControl.FindResource("fontColor") as SolidColorBrush;
fontColor.Color = e.color;
break;
//centerColor
}
}
}
public Color MajorTickColor
{
get { return (Color)GetValue(MajorTickColorProperty); }
set { SetValue(MajorTickColorProperty, value); }
}
// private Color minorTickColor = Colors.Gray;
public Color MinorTickColor
{
get { return (Color)GetValue(MinorTickColorProperty); }
set { SetValue(MinorTickColorProperty, value); }
}
}