Files
ATV_STDLabelAttach/Handler/Project/UIControl/CtlSensor.cs
2025-07-17 16:11:46 +09:00

89 lines
2.9 KiB
C#

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("맑은 고딕", 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("맑은 고딕", 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 });
}
}
}
}