public override void Paint(Pad pad, double minX, double maxX, double minY, double maxY)
{
base.Paint(pad, minX, maxX, minY, maxY);
if (string.IsNullOrWhiteSpace(Text))
return;
var size = pad.Graphics.MeasureString(Text, TextFont);
var w = size.Width;
var h = size.Height;
var clientX = pad.ClientX(X);
var clientY = pad.ClientY(Y);
var point = PointF.Empty;
switch (TextPosition)
{
case ETextPosition.RightTop:
point = new PointF(clientX + TextOffsetX, clientY - h - TextOffsetY);
break;
case ETextPosition.LeftTop:
point = new PointF(clientX - w - TextOffsetX, clientY - h - TextOffsetY);
break;
case ETextPosition.CentreTop:
point = new PointF(clientX - w/2 - TextOffsetX, clientY - h - TextOffsetY);
break;
case ETextPosition.RightBottom:
point = new PointF(clientX + TextOffsetX, clientY + Size/2 + TextOffsetY);
break;
case ETextPosition.LeftBottom:
point = new PointF(clientX - w - TextOffsetX, clientY + Size/2 + TextOffsetY);
break;
case ETextPosition.CentreBottom:
point = new PointF(clientX - w/2 - TextOffsetX, clientY + Size/2 + TextOffsetY);
break;
}
pad.Graphics.DrawString(Text, TextFont, new SolidBrush(TextColor), point.X, point.Y);
}
}