CircularGauge是非常优秀的可自定义控件循环表,可用于开发电流表与电压表,开源代码可以从下面的链接去下载:
https://www.codeproject.com/kb/silverlight/circulargaugecontrol.aspx?msg=3745697#xx3745697xx
或者
http://download.csdn.net/download/little_ban/9692810

下面以绘制电流表为例,阐述WPF绘制电流表的过程
Step1. 新建一个空的WPF工程命名为,在新的工程中完成CircularGauge.dll的添加。
把刚刚下载的CircularGauge开源代码,放在新建工程的文件目录下,如下图:

右击解决方案,添加->现有工程->选择刚刚添加的开源文件中的CircularGauge.csproj工程,点击“添加”完成CircularGauge工程的添加。右击该工程查看其属性的输出类型(属性->应用程序->输出类型)是否为:类库。右击该工程的“重新生成(E)”
Step2.引用CircularGauge.dll并添加CircularGauge的命名空间。
①添加引用:右击Galvanometer的“引用”,选择“添加引用”弹出下面的窗口,点击确定完成dll的添加。

②添加CircularGauge的命名空间:

<Window x:Class="Galvanometer.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:gauge="clr-namespace:CircularGauge;assembly=CircularGauge"Name="DianLiuBiao" Height="340" Width="340"Title="电流表" WindowStyle="SingleBorderWindow" Topmost="True">

Step3.在MainWindow.xmal中增加绘制电流表的XMAL代码。

<gauge:CircularGaugeControl x:Name="myGauge1"Radius="150" ScaleRadius="110" ScaleStartAngle="120" ScaleSweepAngle="300"PointerLength="85" PointerCapRadius="35" MinValue="0" MaxValue="1000" MajorDivisionsCount="10" MinorDivisionsCount="5" CurrentValue="{Binding Score}"ImageSource="Pics/Ampere.ico"ImageSize="40,40"RangeIndicatorThickness="8"RangeIndicatorRadius="120"RangeIndicatorLightRadius="10"RangeIndicatorLightOffset="80"ScaleLabelRadius="90"ScaleLabelSize="40,20"ScaleLabelFontSize="10"ScaleLabelForeground="LightGray"MajorTickSize="10,3"MinorTickSize="3,1"MajorTickColor="LightGray"MinorTickColor="LightGray"ImageOffset="-50"GaugeBackgroundColor="Black"PointerThickness ="16"OptimalRangeStartValue="300"OptimalRangeEndValue="700" DialTextOffset="40" DialText="mA"DialTextColor="Black"></gauge:CircularGaugeControl>

下面重点讲解下CircularGauge控件的几个重要参数:
- Background 背景色设置,背景颜色会自动创建一个渐变和玻璃效果。
- ScaleRadius 刻度位置的半径值,根据自己需要进行调制半径值达到调整刻度位置的目的。
- ScaleLabelRadius 刻度标签的半径值。
- RangeIndicatorRadius 刻度范围指示器的半径、
- ImageOffset 外置图片的位置偏移。
- DialTextOffset 电表标识的文本控件位置偏移。
- DialText 电表标识的文本内容,比如本文设置为 “mA”。
- RangeIndicatorLightOffset 范围指示灯的位置偏移。
- OptimalRangeStartValue 电流值最佳范围的起始值,与OptimalRangeEndValue一起搭配使用,指明电表量程的最佳范围。
- OptimalRangeEndValue 电流值最佳范围的终止值。
Step4.实现电流表动态动作的代码。
在MainWindow.xaml.cs中添加下面的代码,采用随机数动态模拟指针动作的过程。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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.Threading;
using System.ComponentModel;namespace Galvanometer
{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{//Private variablesprivate DispatcherTimer timer;private Game game1;public MainWindow(){InitializeComponent();this.Loaded += new RoutedEventHandler(Window_Loaded);}void Window_Loaded(object sender, RoutedEventArgs e){//Set the current value of the gaugesgame1 = new Game(0);this.myGauge1.DataContext = game1;//Start the timertimer = new DispatcherTimer();timer.Interval = TimeSpan.FromMilliseconds(2000);timer.Tick += new EventHandler(timer_Tick);timer.Start();}void timer_Tick(object sender, EventArgs e){//Update random scoresRandom r = new Random();game1.Score = r.Next(0, 1000);}}/// <summary>/// Helper class to simulate a game/// </summary>public class Game : INotifyPropertyChanged{private double score;public double Score{get { return score; }set{score = value;if (PropertyChanged != null){PropertyChanged(this, new PropertyChangedEventArgs("Score"));}}}public Game(double scr){this.Score = scr;}#region INotifyPropertyChanged Memberspublic event PropertyChangedEventHandler PropertyChanged;#endregion}
}

最终实现的效果如图:

参考文献:
1、http://www.cnblogs.com/salam/archive/2010/07/23/1784045.html
2、https://www.nuget.org/packages/CircularGauge/
3、http://download.csdn.net/download/little_ban/9692810

WPF利用CircularGauge.dll绘制电流表与电压表相关推荐

  1. 并联串联混合的电压和电流_高考物理常考实验之电流表改装电压表怎么串联电阻...

    ​高中物理学习问题与王尚老师答疑 ​ 电流表改装电压表怎么串联电阻 [问:电流表改装电压表怎么串联电阻?] 王尚老师:基本理论是欧姆定律,我举个例子来说这个问题吧. 如果是0.3A量程的电流表,改装为 ...

  2. WPF 利用键盘钩子来捕获键盘,做一些不为人知的事情...完整实例

    原文:WPF 利用键盘钩子来捕获键盘,做一些不为人知的事情...完整实例 键盘钩子是一种可以监控键盘操作的指令. 看到这句话是不是觉得其实键盘钩子可以做很多事情. 场景 当你的程序需要一个全局的快捷键 ...

  3. DSBC176 3BSE019216R1​有综合保护器、电流表、电压表等器件​

    ​ DSBC176 3BSE019216R1 有综合保护器.电流表.电压表等器件 另一个方法是先对数组排序,然后取中间元素即可,因为如果某个元素的个数超过一半,那么数组排序后该元素必定占据数组的中间位 ...

  4. 技术图文:如何利用C# + Echarts 绘制「堆叠条形图」?

    背景 前几天,我们介绍了 如何利用C# + Echarts 绘制 Bar Simple?,原以为把 Echarts 封装到这种程度就可以完成当前任务了. 可是,把软件原型提交给对方时,发现对方更希望& ...

  5. 利用Gephi软件绘制网络图

    文章目录 利用Gephi软件绘制网络图 1. 生成物种相关性矩阵 2. Gephi生成点.边文件 3. 点.边文件注释 4. 网络点.边美化 5. 网络属性.预览和标签 参考文献 猜你喜欢 写在后面 ...

  6. python画笑脸-python 利用turtle库绘制笑脸和哭脸的例子

    我就废话不多说了,直接上代码吧! import turtle turtle.pensize(5) turtle.pencolor("yellow") turtle.fillcolo ...

  7. python turtle画彩虹-Python利用turtle库绘制彩虹代码示例_天津SEO

    天津SEO RGB模型:光的三原色,共同决定色相 HSB/HSV模型:H色彩,S深浅,B饱和度,H决定色相 需要将HSB模型转换为RGB模型 代码示例: #-*- coding:utf-8 –*- f ...

  8. python画图代码彩虹-Python利用turtle库绘制彩虹代码示例

    语言:Python IDE:Python.IDE 需求 做出彩虹效果 颜色空间 RGB模型:光的三原色,共同决定色相 HSB/HSV模型:H色彩,S深浅,B饱和度,H决定色相 需要将HSB模型转换为R ...

  9. Python:利用python语言绘制多个子图经典案例、代码实现之详细攻略

    Python:利用python语言绘制多个子图经典案例.代码实现之详细攻略 目录 利用python语言绘制多个子图代码实现.经典案例 1.绘制多个子图框架 多个子图绘制的经典案例 1.绘制多个直方图 ...

最新文章

  1. f1 score 代码_腾讯广告算法大赛冠军代码解读:稠密特征工程
  2. C语言实用算法系列之学生管理系统_对整个结构体操作_冒泡排序
  3. Tensorflow快餐教程(6) - 矩阵分解
  4. 边缘AI计算新时代,人工神经网络秒变脉冲神经网络
  5. CSS 再学习,基础篇
  6. day4-mysql数据关系
  7. 父亲去年喂猪挣了21万
  8. 小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_5、SpringBoot2.x的依赖默认Maven版本...
  9. CPC客户端离线升级失败,不能获取updatesipo信息,可能你的软件在线更新程序没有安装
  10. WIN10环境JAVA的JDK环境变量设置教程
  11. 暗战 惠普再掀市场风云
  12. 概率论与数理统计 | (16) 方差分析与一元线性回归
  13. qfiledialog保存时为文件名添加后缀
  14. 联想xiaoxin700-15isk黑苹果clover分享
  15. Java Ucase_VBScript字符串期函数(InStr、Left、Len、Mid、Replace、StrComp、UCase……)...
  16. python 简历处理_利用python处理简历和名单——处理excel os、shutil处理文件
  17. vue3项目将图片正时针、逆时针旋转
  18. nginx 开启gzip压缩
  19. TCM和CACHE简述
  20. python算法与程序基础题库,计算机算法与程序设计(python)MOOC章节测试答案

热门文章

  1. animation动画:奔跑的北极熊
  2. apf svg matlab,百科|APF和SVG的区别与联系
  3. uniapp android真机调试报错TypeError: Invalid attempt to destructure non-iterable instance
  4. PIC16F1823开发笔记(二)芯片研究以及第一个程序和汇编研究
  5. Pandas快速入门之第三节使用pandas去重、合并、已经统计出现次数
  6. Linux关于Header V3 DSA signature: NOKEY, key ID错误解决方法
  7. 用链接提交form表单
  8. NNDL 实验二 pytorch入门
  9. Windows下安装OMNET++仿真工具
  10. 学习笔记1..燕十八老师公益课堂