AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Uhr besser zentrieren!

Ein Thema von Molzer · begonnen am 23. Jan 2009 · letzter Beitrag vom 23. Jan 2009
Antwort Antwort
Molzer

Registriert seit: 7. Dez 2008
70 Beiträge
 
#1

Uhr besser zentrieren!

  Alt 23. Jan 2009, 18:15
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.
Meine Version:
Borland® Delphi® für Microsoft® Windows™ Version 10.0.2288.42451 Update 2 Copyright © 2005 Borland® Software Corporation.
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Uhr besser zentrieren!

  Alt 23. Jan 2009, 20:41
Zitat von Molzer:
hallo!!

Wie passt sich meine Uhr besser an die Größe meines Fensters an?
Definiere "besser"!

Was mir auf dem ersten Blick auffällt:

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;
 { ... }
Der Radius r bekommt aus den noch nicht definierten(!!!), weil erst später berechneten, Werten mx & my seinen Wert.

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:
  { ... }
  mx := Width div 2;
  my := Height div 2;
  if Height <= Width
    r := Height div 3
  else
    r := Width div 3;
  { ... }
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.
Es ist zu wahr um schön zu sein...
  Mit Zitat antworten Zitat
Molzer

Registriert seit: 7. Dez 2008
70 Beiträge
 
#3

Re: Uhr besser zentrieren!

  Alt 23. Jan 2009, 22:17
danke dir!!
Meine Version:
Borland® Delphi® für Microsoft® Windows™ Version 10.0.2288.42451 Update 2 Copyright © 2005 Borland® Software Corporation.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz