126 lines
4.8 KiB
C#
126 lines
4.8 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 CtlTowerLamp : CtlBase
|
|
{
|
|
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
|
|
public PinInfo arPinRed { get { return PinList[0]; } set { PinList[0] = value; } }
|
|
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
|
|
public PinInfo arPinYel { get { return PinList[1]; } set { PinList[1] = value; } }
|
|
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
|
|
public PinInfo arPinGrn { get { return PinList[2]; } set { PinList[2] = value; } }
|
|
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
|
|
public PinInfo arPinBuz { get { return PinList[3]; } set { PinList[3] = value; } }
|
|
|
|
|
|
|
|
public CtlTowerLamp()
|
|
{
|
|
InitializeComponent();
|
|
|
|
SetPinCount(4);
|
|
this.MinimumSize = new Size(4, 4);
|
|
}
|
|
|
|
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);
|
|
|
|
|
|
//상위 80% 영역을 표시영역으로 사용한ㄷ
|
|
var term = 3;
|
|
var DispRect = new Rectangle(baseRect.Left, baseRect.Top, baseRect.Width, (int)(baseRect.Height * 0.8f));
|
|
var LampHeight = arPinBuz.PinIndex == -1 ? (DispRect.Height - 3 * term) / 3.0f : (DispRect.Height - 4 * term) / 4.0f;
|
|
|
|
var rectR = new RectangleF(DispRect.Left, DispRect.Top + term, DispRect.Width, LampHeight);
|
|
var rectY = new RectangleF(DispRect.Left, rectR.Bottom + term, DispRect.Width, LampHeight);
|
|
var rectG = new RectangleF(DispRect.Left, rectY.Bottom + term, DispRect.Width, LampHeight);
|
|
var rectB = RectangleF.Empty;
|
|
if (arPinBuz.PinIndex != -1)
|
|
{
|
|
rectB = new RectangleF(DispRect.Left, rectG.Bottom + term, DispRect.Width, LampHeight);
|
|
}
|
|
|
|
var rectCT = new RectangleF(DispRect.Left + (DispRect.Width - 20) / 2.0f, DispRect.Top, 20, baseRect.Height);
|
|
pe.Graphics.FillRectangle(Brushes.DimGray, rectCT);
|
|
pe.Graphics.DrawRectangle(Pens.Black, rectCT);
|
|
|
|
if(this.PinList[0].Value)
|
|
pe.Graphics.FillRectangle(Brushes.Red, rectR);
|
|
else
|
|
pe.Graphics.FillRectangle(Brushes.Gray, rectR);
|
|
|
|
if (this.PinList[1].Value)
|
|
pe.Graphics.FillRectangle(Brushes.Gold, rectY);
|
|
else
|
|
pe.Graphics.FillRectangle(Brushes.Gray, rectY);
|
|
|
|
if (this.PinList[2].Value)
|
|
pe.Graphics.FillRectangle(Brushes.Green, rectG);
|
|
else
|
|
pe.Graphics.FillRectangle(Brushes.Gray, rectG);
|
|
|
|
pe.Graphics.DrawRectangle(Pens.Black, rectR);
|
|
pe.Graphics.DrawRectangle(Pens.Black, rectY);
|
|
pe.Graphics.DrawRectangle(Pens.Black, rectG);
|
|
|
|
pe.Graphics.DrawString("RED",
|
|
this.Font,
|
|
Brushes.Black,
|
|
rectR,
|
|
new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
|
|
|
|
pe.Graphics.DrawString("YEL",
|
|
this.Font,
|
|
Brushes.Black,
|
|
rectY,
|
|
new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
|
|
|
|
pe.Graphics.DrawString("GRN",
|
|
this.Font,
|
|
Brushes.Black,
|
|
rectG,
|
|
new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
|
|
|
|
if (rectB.IsEmpty == false)
|
|
{
|
|
if (this.PinList[3].Value)
|
|
pe.Graphics.FillRectangle(Brushes.Magenta, rectB);
|
|
else
|
|
pe.Graphics.FillRectangle(Brushes.Gray, rectB);
|
|
|
|
pe.Graphics.DrawRectangle(Pens.Black, rectB);
|
|
|
|
pe.Graphics.DrawString("BUZ",
|
|
this.Font,
|
|
Brushes.Black,
|
|
rectB,
|
|
new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|