70 lines
1.7 KiB
C#

using System.Drawing;
using System.Windows.Forms;
namespace DevComponents.Instrumentation
{
public class MechanicalElement : NumericElement
{
#region Private variables
private int _Descent;
#endregion
public MechanicalElement(NumericIndicator numIndicator)
: base(numIndicator)
{
}
#region RecalcLayout
public override void RecalcLayout()
{
base.RecalcLayout();
Font font = NumIndicator.AbsFont;
FontFamily family = new FontFamily(font.Name);
int descent = family.GetCellDescent(font.Style);
float descentPixel = font.Size * descent / family.GetEmHeight(font.Style);
_Descent = (int)(descentPixel / 2) + 1;
}
#endregion
#region OnPaint
public override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if (Bounds.Width > 0 && Bounds.Height > 0)
{
Graphics g = e.Graphics;
if (BackColor != null && BackColor.IsEmpty == false)
{
Rectangle r = GetPaddedRect(Bounds);
using (Brush br = BackColor.GetBrush(r))
g.FillRectangle(br, r);
}
using (StringFormat sf = new StringFormat())
{
sf.Alignment = StringAlignment.Center;
sf.LineAlignment = StringAlignment.Center;
Rectangle r = Bounds;
r.Y += _Descent;
g.DrawString(Value.ToString(), NumIndicator.AbsFont, BrushOn, r, sf);
}
}
}
#endregion
}
}