using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace UIControl { public partial class CtlSensor : CtlBase { [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public PinInfo arPin { get { return PinList[0]; } set { PinList[0] = value; } } Font font_ = new Font("Malgun Gothic", 10); [Browsable(true)] public new Font Font { get { return font_; } set { font_ = value; this.Invalidate(); } } public Boolean RectShape { get; set; } public Color ColorOn { get; set; } public Color ColorOff { get; set; } public CtlSensor() { InitializeComponent(); SetPinCount(1); //this.MaximumSize = new Size(80, 80); this.MinimumSize = new Size(4, 4); this.ColorOn = Color.Lime; this.ColorOff = Color.DimGray; //if (this.Font == null) this.Font = new Font("Malgun Gothic", 10); //if (this.Text == null) this.Text = string.Empty; } public override void MakeRect() { } public override void UpdateValue() { } protected override void OnPaint(PaintEventArgs pe) { base.OnPaint(pe); pe.Graphics.DrawRectangle(Pens.Gray, DisplayRectangle.Left, DisplayRectangle.Top, DisplayRectangle.Width - 1, DisplayRectangle.Height - 1); var baseRect = new Rectangle(DisplayRectangle.Left + Padding.Left, DisplayRectangle.Top + Padding.Top, DisplayRectangle.Width - Padding.Left - Padding.Right, DisplayRectangle.Height - Padding.Top - Padding.Bottom); var rect = new Rectangle(baseRect.Left + 1, baseRect.Top + 1, baseRect.Width - 2, baseRect.Height - 2); if (RectShape) { if (arPin.Value) pe.Graphics.FillRectangle(new SolidBrush(ColorOn), rect); else pe.Graphics.FillRectangle(new SolidBrush(ColorOff), rect); pe.Graphics.DrawRectangle(Pens.Black, rect); } else { if (arPin.Value) pe.Graphics.FillEllipse(new SolidBrush(ColorOn), rect); else pe.Graphics.FillEllipse(new SolidBrush(ColorOff), rect); pe.Graphics.DrawEllipse(Pens.Black, rect); } if (string.IsNullOrEmpty(Text) == false) { pe.Graphics.DrawString(Text, this.Font, Brushes.Black, baseRect, new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); } } } }