Registriert seit: 6. Apr 2005
10.109 Beiträge
|
Re: Drehpoti zeichnen
31. Mai 2006, 21:50
Ich habe mal den Code für einfarbige Darstellung geschrieben. Wenn du noch eine Skala definierst, dann kannst du die Abschnitte verschiedenfarbig zeichnen:
Delphi-Quellcode:
procedure DrawPercent(img: TImage; n, percent: Integer);
const
OUTER_OFFSET = 5;
INNER_OFFSET = 5;
var
alpha, beta, ro, ri, xa, ya, xb, yb, mx, my: Integer;
begin
case n of
5: begin alpha := 180; beta := alpha - Round(percent / 100 * 180); end;
7: begin alpha := 225; beta := alpha - Round(percent / 100 * 270); end;
else begin alpha := 270; beta := alpha - Round(percent / 100 * 360); end;
end;
mx := Pred(Min(img.Width, img.Height)) shr 1;
my := mx;
ro := mx - OUTER_OFFSET;
ri := INNER_OFFSET;
with img.Canvas do
begin
Pen.Color := clWhite;
Brush.Color := clGreen;
xa := mx + Trunc(Cos(DegToRad(alpha)) * ro);
ya := my - Trunc(Sin(DegToRad(alpha)) * ro);
xb := mx + Trunc(Cos(DegToRad(beta)) * ro);
yb := my - Trunc(Sin(DegToRad(beta)) * ro);
Pie(mx - ro, my - ro, mx + ro, my + ro, xb, yb, xa, ya);
Brush.Color := clWhite;
xa := mx + Trunc(Cos(DegToRad(alpha)) * ri);
ya := my - Trunc(Sin(DegToRad(alpha)) * ri);
xb := mx + Trunc(Cos(DegToRad(beta)) * ri);
yb := my - Trunc(Sin(DegToRad(beta)) * ri);
Pie(mx - ri, my - ri, mx + ri, my + ri, xb, yb, xa, ya);
end;
end;
Gute Nacht
marabu
|
|
Zitat
|