Skip to main content

Gauge Class

NuGet: GHIElectronics.TinyCLR.UI
Assembly: GHIElectronics.TinyCLR.UI
Namespace: GHIElectronics.TinyCLR.UI.Controls

Analog gauge with calibrated tick marks, optional threshold arc, optional seven-segment digital readout, dial label, and pointer needle. Always square — pass the side length to the constructor. Rendering is cached: the static background (dial face, calibration, threshold, digital number, label) is drawn once into a backing bitmap; only the pointer is redrawn each paint. Any property change marks the background dirty.

public class Gauge : Image, IDisposable

Constructors

Gauge(int side)

public Gauge(int side) : base()

Creates a new square Gauge with the given side length in pixels.

Properties

Font

public Font Font { get; set; }

Font used for the dial labels and digital readout.

EnableDigitalNumber

public bool EnableDigitalNumber { get; set; }

When true, a seven-segment digital value is shown below the dial.

EnableThreshold

public bool EnableThreshold { get; set; }

When true, the threshold arc around the recommended value is drawn.

EnableScale

public bool EnableScale { get; set; }

When true (the default), the control draws the tick marks and scale numbers. Set false when the dial face is supplied as a BackgroundImage that already includes the scale, so the control draws only the needle over your artwork (no numbers on top).

NeedleLength

public double NeedleLength { get; set; }

Length of the pointer needle as a fraction of the dial radius (half the control size). Default 0.68 (the classic length). Lower = shorter needle — handy when a BackgroundImage dial's scale sits well inside the control. Clamped 0.1–1.2.

NeedleCenterY

public double NeedleCenterY { get; set; }

Vertical position of the needle pivot (and centre cap) as a fraction of the control height. Default 0.5 (centre). Raise toward 1.0 (e.g. 0.75) to drop the pivot to the BOTTOM — the natural hub for a half (180°) dial whose arc sits in the upper area. Clamped 0–1. Affects only the needle/cap, so it's meant for an image-faced gauge (EnableScale=false); with drawn ticks it would offset the needle from the (centred) scale.

SweepAngle

public float SweepAngle { get; set; }

Sweep of the dial arc in degrees (30–360). 270 (default) = classic dial, 180 = half dial, 360 = full ring. The arc is centred on the bottom opening.

BackColor

public MediaColor BackColor { get; set; }

Background color behind the dial.

DialColor

public MediaColor DialColor { get; set; }

Color of the dial face.

ForeColor

public MediaColor ForeColor { get; set; }

Color of the tick marks, labels and dial text.

MinValue

public float MinValue { get; set; }

Smallest value on the dial.

MaxValue

public float MaxValue { get; set; }

Largest value on the dial.

ThresholdPercent

public float ThresholdPercent { get; set; }

Threshold area around the recommended value, 1–99%.

RecommendedValue

public float RecommendedValue { get; set; }

Value the threshold arc is centered on.

Value

public float Value { get; set; }

Current needle position. Only this property doesn't dirty the background — the pointer is repainted every frame.

Glossiness

public float Glossiness { get; set; }

Glossiness strength 0..100 (mapped to 0..220 alpha internally).

NoOfDivisions

public int NoOfDivisions { get; set; }

Number of major tick divisions on the dial (2-24).

NoOfSubDivisions

public int NoOfSubDivisions { get; set; }

Number of minor tick marks between major divisions (1-10).

DialText

public string DialText { get; set; }

Label text drawn on the dial face.

EnableTransparentBackground

public bool EnableTransparentBackground { get; set; }

When true, the dial face is overlapped by a slightly larger ellipse in the back color so the dial appears to float. Costs an extra FillEllipse per redraw.

BackgroundImage

public System.Drawing.Image BackgroundImage { get; set; }

Optional custom dial-face image, drawn scaled to the square dial in place of the flat DialColor face. The tick marks, labels, threshold and needle are still drawn on top. Use with TransparentColor to key out a colour so a rectangular image can present as a circular (or any) shaped gauge.

TransparentColor

public new MediaColor TransparentColor { get; set; }

A colour in BackgroundImage to make transparent (so a rectangular source image can show as a circular / custom-shaped gauge). Mirrors System.Drawing.Image.MakeTransparent; applied once when the background is next redrawn.

Methods

Dispose()

public void Dispose()

Releases the resources used by the gauge.

Dispose(bool disposing)

protected virtual void Dispose(bool disposing)

Releases the gauge's cached drawing surfaces.

OnRender(DrawingContext dc)

public override void OnRender(DrawingContext dc)

Draws the dial face and pointer needle.