AGB  ·  Datenschutz  ·  Impressum  







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

Graphisch Digitale/Analoge Uhr

Ein Thema von n00b_on_knees · begonnen am 21. Jan 2004 · letzter Beitrag vom 29. Jan 2004
Antwort Antwort
Benutzerbild von Spezi1980
Spezi1980

Registriert seit: 11. Aug 2003
Ort: Dresden OT Cossebaude
71 Beiträge
 
Delphi 2005 Personal
 
#1

Re: Graphisch Digitale/Analoge Uhr

  Alt 28. Jan 2004, 19:48
Hallo,

Wenn du die Uhr direkt malen willst, so kann ich dir ein Beispiel zeigen:

analoge Uhr:
also, du nimmst ein leeres Fenster, haust eine Paintbox und einen Timer drauf. Den Interval der Uhr setzt du auf 1000 (ms = 1s).

In das Ereigniss "OnTimer" des Timers gibst du folgendes ein:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
 Procedure DrawDigit(Digit:Char; XPos,YPos, Size:Integer; Canvas : TCanvas);
 Var I:Integer; X,Y, Breite,Hoehe:Integer;
 begin
   Breite := Size div 2; {Breite einer Zahl berechnen}
   Hoehe := Size; {Hoehe einer Zahl berechnen}
   Canvas.MoveTo(XPos,YPos);
   case Digit of
     ':' : begin
               X := Breite div 2;
               Y := Hoehe div 3;
               Canvas.Ellipse(XPos +X -1, YPos + y -1,XPos +X +1,YPos +Y +1);
               Canvas.Ellipse(XPos +X -1, YPos + y*2 -1,XPos +X +1,YPos +Y*2 +1);
           end;
     '.' : begin
               X := XPos + Breite div 2;
               Y := XPos + Hoehe;
               Canvas.Ellipse(X - 1,y-2, X + 1,y);
           end;
     '0' : begin
               Canvas.LineTo(XPos,YPos + Size);
               Canvas.LineTo(XPos + Breite,YPos + Hoehe);
               Canvas.LineTo(XPos + Breite,YPos);
               Canvas.LineTo(XPos,YPos);
           end;
     '1' : begin
               Canvas.MoveTo(XPos,YPos + Size div 3);
               Canvas.LineTo(XPos + Breite,YPos);
               Canvas.LineTo(XPos + Breite,YPos + Hoehe);
           end;
     '2' : begin {...}
               Canvas.MoveTo(XPos ,YPos + Hoehe div 5);
               Canvas.LineTo(XPos ,YPos);
               Canvas.LineTo(XPos + Breite ,YPos);
               Canvas.LineTo(XPos + Breite ,YPos + Hoehe div 2);
               Canvas.LineTo(XPos ,YPos + Hoehe div 2);
               Canvas.LineTo(XPos ,YPos + Hoehe);
               Canvas.LineTo(XPos + Breite ,YPos + Hoehe);
               Canvas.LineTo(XPos + Breite ,YPos + Hoehe - Hoehe div 5);
           end;
     '3' : begin {...
                   Hier musst du nun selbst aktiv werden und die anderen Zahlen wie oben malen...}

           end;
   end;
 end;
Var I:Integer; Zeit:String;
begin
  Zeit := timetoStr(now); //aktuelle Uhrzeit ermitteln
  Canvas.Rectangle(0,0,PaintBox1.Width,PaintBox1.Height); //Inhalt der Paintbox löschen
  for I:=1 to length(Zeit) do begin
    DrawDigit( Zeit[I] , //Die übergebene Ziffer
              (5 + abs(PaintBox1.Canvas.Font.Height) div 2) * I, //die X Koordinate der Ziffer (die 5 ist der Abstand)
              10, //die Y Koordinate des Textes
              abs(PaintBox1.Canvas.Font.Height), //Die Schriftgröße
              PaintBox1.Canvas); //wohin gezeichnet werden soll
  end;
end;
Ich hoffe mal das dir das weiterhilft.

Gruß
Robs

[Edit]mann sollte sich das auch nochmal durchlesen was man postet [/Edit]
grrrrrrrr
Robert
Codito, ergo sum.
>>I code, therefore I am<<
  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 18:12 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-2025 by Thomas Breitkreuz