⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usercontrol1.cs

📁 很实用的仪表组件
💻 CS
📖 第 1 页 / 共 2 页
字号:
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 + -