130 lines
4.1 KiB
C#
130 lines
4.1 KiB
C#
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
|
|
namespace DevComponents.Instrumentation
|
|
{
|
|
internal abstract class GaugeFrameRenderer
|
|
{
|
|
#region Private variables
|
|
|
|
private GaugeFrame _GaugeFrame;
|
|
|
|
#endregion
|
|
|
|
protected GaugeFrameRenderer(GaugeFrame gaugeFrame)
|
|
{
|
|
_GaugeFrame = gaugeFrame;
|
|
}
|
|
|
|
#region Abstract methods
|
|
|
|
internal abstract void SetBackClipRegion(PaintEventArgs e);
|
|
internal abstract void PreRenderContent(PaintEventArgs e);
|
|
internal abstract void PostRenderContent(PaintEventArgs e);
|
|
|
|
protected abstract void RenderFrameByAngle(PaintEventArgs e, Rectangle r);
|
|
protected abstract void RenderFrameByCenter(PaintEventArgs e, Rectangle r);
|
|
protected abstract void RenderFrameByHorizontalCenter(PaintEventArgs e, Rectangle r);
|
|
protected abstract void RenderFrameByVerticalCenter(PaintEventArgs e, Rectangle r);
|
|
protected abstract void RenderFrameByNone(PaintEventArgs e, Rectangle r);
|
|
|
|
protected abstract void RenderBackByAngle(PaintEventArgs e, Rectangle r);
|
|
protected abstract void RenderBackByCenter(PaintEventArgs e, Rectangle r);
|
|
protected abstract void RenderBackByHorizontalCenter(PaintEventArgs e, Rectangle r);
|
|
protected abstract void RenderBackByVerticalCenter(PaintEventArgs e, Rectangle r);
|
|
protected abstract void RenderBackByNone(PaintEventArgs e, Rectangle r);
|
|
|
|
#endregion
|
|
|
|
#region Protected properties
|
|
|
|
protected GaugeFrame GaugeFrame
|
|
{
|
|
get { return (_GaugeFrame); }
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region SetFrameRegion
|
|
|
|
internal virtual void SetFrameRegion()
|
|
{
|
|
if (GaugeFrame.GaugeControl != null)
|
|
GaugeFrame.GaugeControl.Region = null;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region RenderFrame
|
|
|
|
internal void RenderFrame(PaintEventArgs e)
|
|
{
|
|
int inside = _GaugeFrame.AbsBevelInside;
|
|
int outside = _GaugeFrame.AbsBevelOutside;
|
|
|
|
Rectangle r = _GaugeFrame.Bounds;
|
|
r.Inflate(-outside, -outside);
|
|
|
|
if (r.Width > 0 && r.Height > 0)
|
|
{
|
|
switch (_GaugeFrame.FrameColor.GradientFillType)
|
|
{
|
|
case GradientFillType.Auto:
|
|
case GradientFillType.Angle:
|
|
case GradientFillType.StartToEnd:
|
|
RenderFrameByAngle(e, r);
|
|
break;
|
|
|
|
case GradientFillType.Center:
|
|
RenderFrameByCenter(e, r);
|
|
break;
|
|
|
|
case GradientFillType.HorizontalCenter:
|
|
RenderFrameByHorizontalCenter(e, r);
|
|
break;
|
|
|
|
case GradientFillType.VerticalCenter:
|
|
RenderFrameByVerticalCenter(e, r);
|
|
break;
|
|
|
|
default:
|
|
RenderFrameByNone(e, r);
|
|
break;
|
|
}
|
|
|
|
r.Inflate(-inside, -inside);
|
|
|
|
if (r.Width > 0 && r.Height > 0)
|
|
{
|
|
switch (_GaugeFrame.BackColor.GradientFillType)
|
|
{
|
|
case GradientFillType.Auto:
|
|
case GradientFillType.Angle:
|
|
case GradientFillType.StartToEnd:
|
|
RenderBackByAngle(e, r);
|
|
break;
|
|
|
|
case GradientFillType.Center:
|
|
RenderBackByCenter(e, r);
|
|
break;
|
|
|
|
case GradientFillType.HorizontalCenter:
|
|
RenderBackByHorizontalCenter(e, r);
|
|
break;
|
|
|
|
case GradientFillType.VerticalCenter:
|
|
RenderBackByVerticalCenter(e, r);
|
|
break;
|
|
|
|
default:
|
|
RenderBackByNone(e, r);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|