Thema: Delphi Drehpoti zeichnen

Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Drehpoti zeichnen

  Alt 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
  Mit Zitat antworten Zitat