![]() |
Uhr besser zentrieren!
hallo!!
Wie passt sich meine Uhr besser an die Größe meines Fensters an?
Delphi-Quellcode:
//digtaluhr und mitte bestimmen-------------------------
procedure TForm2.Timer1Timer(Sender: TObject); var winkel : real; x, y, r, i : Integer; hour, min, sec, msec : Word; begin decodetime(mytime,hour,min,sec,msec); r:=((mx+my)div 4); mx := Width div 2; my := Height div 2; refresh; sekunde; //Stundenstriche ------------------------------------------ with canvas do begin pen.Width:=3; pen.Color:=clblack; moveto(mx,my-width div 4); lineto(mx,my-width div 5); pen.Width:=3; pen.Color:=clblack; moveto(mx-width div 4,my); lineto(mx-width div 5,my); pen.Width:=3; pen.Color:=clblack; moveto(mx+width div 4,my); lineto(mx+width div 5,my); pen.Width:=3; pen.Color:=clblack; moveto(mx,my+width div 4); lineto(mx,my+width div 5); // Sekundenzeiger------------------------------------------ winkel:=sec* ((2*pi) / 60) - pi/2; x:=Trunc(cos(winkel)*r); y:=Trunc(sin(winkel)*r); x:=x+(mx); y:=y+(my); Canvas.Pen.Color:=clblack; Canvas.Pen.Width:=1; Canvas.MoveTo(mx,my); Canvas.LineTo(x,y); end; end; end. |
Re: Uhr besser zentrieren!
Zitat:
Was mir auf dem ersten Blick auffällt:
Delphi-Quellcode:
Der Radius r bekommt aus den noch nicht definierten(!!!), weil erst später berechneten, Werten mx & my seinen Wert.
//digtaluhr und mitte bestimmen-------------------------
procedure TForm2.Timer1Timer(Sender: TObject); var winkel : real; x, y, r, i : Integer; hour, min, sec, msec : Word; begin decodetime(mytime,hour,min,sec,msec); r:=((mx+my)div 4); mx := Width div 2; my := Height div 2; { ... } Auch ist die Berechnung des Radius mehr als sub-optimal. Was ist, wenn das Fenster zwar 500 Pixel breit ist aber nur 50 Pixel hoch; das würde echt bescheiden aussehen (meinst Du das etwa mit der "besseren" Anpassung an das Fenster?) Ich würde es, quick and dirty, ähnlich wie folgt machen:
Delphi-Quellcode:
Den Rest Deiner Positionsberechnungen würde ich ähnlich, anhand des kleineren Wertes von Width und Height, berechnen. So sollte sich die Uhr immer zentral im Fenster befinden, ohne dass ein Teil außerhalb gezeichnet werden würde.
{ ... }
mx := Width div 2; my := Height div 2; if Height <= Width r := Height div 3 else r := Width div 3; { ... } |
Re: Uhr besser zentrieren!
danke dir!!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz