initial commit
This commit is contained in:
106
Cs_HMI/SubProject/AGVControl/GuideSensor.cs
Normal file
106
Cs_HMI/SubProject/AGVControl/GuideSensor.cs
Normal file
@@ -0,0 +1,106 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Narumi.UC
|
||||
{
|
||||
public partial class GuideSensor : Control
|
||||
{
|
||||
public int SensorValue { get; set; } = 0;
|
||||
public bool LMark { get; set; } = false;
|
||||
public bool RMark { get; set; } = false;
|
||||
|
||||
public GuideSensor()
|
||||
{
|
||||
InitializeComponent();
|
||||
// Set Optimized Double Buffer to reduce flickering
|
||||
this.SetStyle(ControlStyles.UserPaint, true);
|
||||
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
|
||||
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
|
||||
this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
|
||||
|
||||
// Redraw when resized
|
||||
this.SetStyle(ControlStyles.ResizeRedraw, true);
|
||||
|
||||
this.Resize += arLabel_Resize;
|
||||
}
|
||||
void arLabel_Resize(object sender, EventArgs e)
|
||||
{
|
||||
Invalidate();
|
||||
}
|
||||
|
||||
protected override void OnPaint(PaintEventArgs pe)
|
||||
{
|
||||
var boxcount = 11;
|
||||
|
||||
var r = new RectangleF(this.DisplayRectangle.Left + Padding.Left,
|
||||
this.DisplayRectangle.Top + Padding.Top,
|
||||
this.DisplayRectangle.Width - Padding.Left - Padding.Right,
|
||||
this.DisplayRectangle.Height - Padding.Top - Padding.Bottom);
|
||||
|
||||
var term = 3;
|
||||
var w = ((r.Width -1) - (term * (boxcount - 1))) / boxcount;
|
||||
var h = r.Height -1;
|
||||
|
||||
pe.Graphics.FillRectangle(new SolidBrush(this.BackColor), this.DisplayRectangle);
|
||||
//pe.Graphics.DrawRectangle(Pens.Red, r.Left, r.Top, r.Width, r.Height);
|
||||
|
||||
for (int i = 0; i < boxcount; i++)
|
||||
{
|
||||
var x = r.Left + i * term + i * w;
|
||||
var y = r.Top;
|
||||
var r2 = new RectangleF(x, y, w, h);
|
||||
|
||||
if (this.Enabled == false)
|
||||
{
|
||||
pe.Graphics.FillRectangle(Brushes.LightGray, r2);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
if (i == 0)
|
||||
{
|
||||
if (LMark)
|
||||
pe.Graphics.FillRectangle(Brushes.SkyBlue, r2);
|
||||
else
|
||||
pe.Graphics.FillRectangle(Brushes.LightGray, r2);
|
||||
}
|
||||
else if (i == 9)
|
||||
{
|
||||
if (RMark)
|
||||
pe.Graphics.FillRectangle(Brushes.SkyBlue, r2);
|
||||
else
|
||||
pe.Graphics.FillRectangle(Brushes.LightGray, r2);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (SensorValue == i)
|
||||
pe.Graphics.FillRectangle(Brushes.Tomato, r2);
|
||||
else
|
||||
pe.Graphics.FillRectangle(Brushes.LightGray, r2);
|
||||
}
|
||||
|
||||
pe.Graphics.DrawRectangle(Pens.DimGray, r2.Left,r2.Top,r2.Width,r2.Height);
|
||||
|
||||
if (i == 0 || i == 10)
|
||||
{
|
||||
pe.Graphics.DrawString("M/K", this.Font,
|
||||
new SolidBrush(this.ForeColor), r2,
|
||||
new StringFormat
|
||||
{
|
||||
Alignment = StringAlignment.Center,
|
||||
LineAlignment = StringAlignment.Center
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user