產線那個工位沒有裝3色報警燈,因而手擼了一個。ide
using System.Drawing; using System.Drawing.Drawing2D; using System.Runtime.InteropServices; using System.Windows.Forms; namespace UNI.WinControls { public enum LED_Status { OK = 1, Error = 2, Warning = 3, Unknowing = 4 } public class ThreeColorLED : Control { [DllImport("Kernel32.dll")] public static extern bool Beep(int frequency, int duration); public ThreeColorLED() { Width = 64; Height = 64; Status = LED_Status.Unknowing; } public LED_Status Status { get; set; } private string statusCode="0"; public string StatusCode { get { return statusCode; } set { statusCode = value; switch (value) { case "1": Status = LED_Status.OK; break; case "2": Status = LED_Status.Error; break; case "3": Status = LED_Status.Warning; break; default: Status = LED_Status.Unknowing; break; } this.Invalidate(); } } protected override void OnPaint(PaintEventArgs e) { var color = Color.Transparent; switch (Status) { case LED_Status.OK: try { Beep(1888,1000); } catch { } color = Color.Green; break; case LED_Status.Error: color = Color.Red; break; case LED_Status.Warning: color = Color.Yellow; break; default: color = Color.Gray; break; } e.Graphics.Clear(color); var b = new SolidBrush(color); Pen p = new Pen(new SolidBrush(color)); Rectangle r = new Rectangle(0, 0, this.Width, this.Height);//標識圓的大小 e.Graphics.DrawEllipse(p, r); e.Graphics.FillEllipse(b, r); GraphicsPath g = new GraphicsPath(); g.AddEllipse(0, 0, Width, Height); this.Region = new Region(g);//這句就是設置圓形的規格區域的 } } }
使用:this