📄 usercontrol1.cs
字号:
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Threading;
namespace Z_CarMeter
{
/// <summary>
/// UserControl1 的摘要说明。
/// </summary>
///
public delegate void AlarmEventHandler(object sender,EventArgs e);
public class UserControl1 : System.Windows.Forms.UserControl
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
private Color backcirclecolor=Color.Black;//仪表的背景色
private Color textcolor=Color.White;//字的颜色
private Color linecolor=Color.White;//刻度的颜色
private Color pointcolor=Color.Yellow;//指针的颜色
private Color alarmcolor=Color.Red;//报警的颜色
private int maxvalue=180;//刻度的最大值
private int minvalue=0;//刻度的最小值
private int mainscales=10;//主刻度的个数
private int minorscales=9;//副刻度的个数
private int alarmvalue=120;//报警值
private bool isalarm=true;//是否需要报警
private bool isdefaultalarm=true;//是否是默认报警
private Color rotatepointcolor=Color.Black;//旋钮的颜色
private Color bordercolor=Color.White;//边框颜色
private Color valuecolor=Color.White;//值的颜色
private Font valuefont=new Font("宋体",10);//值的字体
private float currentvalue=0;//指针的当前值
private Color namecolor=Color.Red;//名称的颜色
private Font namefont=new Font("宋体",10);//名称的字体
private string metername="速 度";//仪表的名称
private Color dimentioncolor=Color.Red;//量纲的颜色
private Font dimentionfont=new Font("宋体",10);//量纲的字体
private string dimention="km/h";//仪表的量纲
private float cdegree=153;//指针的当前位置
private float ycdegree;//指针的原始位置
private PointF point1;
private PointF point2;
private PointF point3;
private PointF point4;
private System.Windows.Forms.Label nl;
private System.Windows.Forms.Label dl;
private System.Windows.Forms.Label vl;//指针
private Font textfont=new Font("宋体", 10);//文本字体
private Color circlebordercolor=Color.Red;//圆边的颜色
private System.Threading.Thread alarmthread;//报警线程
private bool BiaoZhi=false;//线程是否曾被挂起的标志
//定义报警事件AlarmEvent
[Description("报警事件"),Category("报警事件")]
public event AlarmEventHandler AlarmEvent;
protected virtual void OnAlarmEvent(EventArgs e)
{
if(AlarmEvent!=null)
AlarmEvent(this,e);
}
public UserControl1()
{
// 该调用是 Windows.Forms 窗体设计器所必需的。
InitializeComponent();
this.BackColor=Color.Black;
SetStyle(System.Windows.Forms.ControlStyles.SupportsTransparentBackColor,true);
// TODO: 在 InitComponent 调用后添加任何初始化
alarmthread=new Thread(new ThreadStart(this.Alarm));
alarmthread.Name="my alarm thread";
alarmthread.IsBackground=true;
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if( components != null )
components.Dispose();
}
base.Dispose( disposing );
}
#region 组件设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.nl = new System.Windows.Forms.Label();
this.dl = new System.Windows.Forms.Label();
this.vl = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// nl
//
this.nl.BackColor = System.Drawing.Color.Transparent;
this.nl.Location = new System.Drawing.Point(48, 72);
this.nl.Name = "nl";
this.nl.Size = new System.Drawing.Size(48, 16);
this.nl.TabIndex = 0;
this.nl.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// dl
//
this.dl.BackColor = System.Drawing.Color.Transparent;
this.dl.Location = new System.Drawing.Point(48, 96);
this.dl.Name = "dl";
this.dl.Size = new System.Drawing.Size(48, 16);
this.dl.TabIndex = 1;
//
// vl
//
this.vl.BackColor = System.Drawing.Color.Transparent;
this.vl.Location = new System.Drawing.Point(40, 120);
this.vl.Name = "vl";
this.vl.Size = new System.Drawing.Size(56, 16);
this.vl.TabIndex = 2;
this.vl.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// UserControl1
//
this.Controls.Add(this.vl);
this.Controls.Add(this.dl);
this.Controls.Add(this.nl);
this.Name = "UserControl1";
this.Resize += new System.EventHandler(this.UserControl1_Resize);
this.ResumeLayout(false);
}
#endregion
[Description("最大刻度值"),Category("参数设置")]
public int MaxValue
{
get
{
return maxvalue;
}
set
{
maxvalue=value;
this.Invalidate();
}
}
[Description("最小刻度值"),Category("参数设置")]
public int MinValue
{
get
{
return minvalue;
}
set
{
minvalue=value;
this.Invalidate();
}
}
[Description("主刻度数"),Category("外观")]
public int MainScales
{
get
{
return mainscales;
}
set
{
mainscales=value;
this.Invalidate();
}
}
[Description("副刻度数"),Category("外观")]
public int MinorScales
{
get
{
return minorscales;
}
set
{
minorscales=value;
this.Invalidate();
}
}
[Description("圆盘背景色"),Category("外观")]
public Color BackCircleColor
{
get
{
return backcirclecolor;
}
set
{
backcirclecolor=value;
this.Invalidate();
}
}
[Description("指针的颜色"),Category("外观")]
public Color PointColor
{
get
{
return pointcolor;
}
set
{
pointcolor=value;
this.Invalidate();
}
}
[Description("刻度的颜色"),Category("外观")]
public Color LineColor
{
get
{
return linecolor;
}
set
{
linecolor=value;
this.Invalidate();
}
}
[Description("文本的颜色"),Category("外观")]
public Color TextColor
{
get
{
return textcolor;
}
set
{
textcolor=value;
this.Invalidate();
}
}
[Description("报警值的颜色"),Category("外观")]
public Color AlarmColor
{
get
{
return alarmcolor;
}
set
{
alarmcolor=value;
this.Invalidate();
}
}
[Description("是否需要报警"),Category("外观")]
public bool IsAlarm
{
get
{
return isalarm;
}
set
{
isalarm=value;
this.Invalidate();
BaoJing();
}
}
[Description("是否是默认报警"),Category("外观")]
public bool IsDefaultAlarm
{
get
{
return isdefaultalarm;
}
set
{
isdefaultalarm=value;
this.Invalidate();
if(!isdefaultalarm)
{
if(alarmthread.IsAlive)
{
alarmthread.Suspend();
BiaoZhi=true;
}
}
else
{
if(BiaoZhi)
alarmthread.Resume();
}
}
}
[Description("旋钮颜色"),Category("外观")]
public Color RotateColor
{
get
{
return rotatepointcolor;
}
set
{
rotatepointcolor=value;
this.Invalidate();
}
}
protected override void OnPaint(PaintEventArgs pe)//重载OnPaint
{
base.OnPaint(pe);
point1=new PointF(0,0);
point2=new PointF(0,-2);
point3=new PointF((this.Width-70)/2,0);
point4=new PointF(0,2);
DrawControl(pe.Graphics);
}
private void DrawControl(Graphics graphics)
{
//仪表的名称
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -