![]() |
Re: Graphisch Digitale/Analoge Uhr
weiß wohl leider nichtmal was eine TInage ist..lol.
Das mit der Paintbox war mir sowieso klar, danke ;)..hmm ja das mit den Linienzeichnen ist auch klar..nur wie passe ich der aktuellen Uhrzeit die Zeiger an, bezüglich dem Winkel, und wie manage ich das bewegen? Immer beim Winkel dazuzählen? Nur wie? |
Re: Graphisch Digitale/Analoge Uhr
Sollte TImage heißen.
|
Re: Graphisch Digitale/Analoge Uhr
Zitat:
Aber zu deinem Problem: Die Digitale Uhr dürfte kein Problem sein: Du nimmst ein TLabel (Register "Standard" auf der Komponentenleiste) und einen TTimer (Register "System") und ziehst dir beide auf dein Form. Dann klickst du doppelt auf den Timer und schreibst:
Delphi-Quellcode:
Die Eigenschaft "Interval" des Timers setzt du im Objektinspektor auf 1000 (Zeit in Millisekunden, nach denen das "onTimer" Ereignis wiederholt ausgeführt wird. Allerdings sollte der Standardwert schon 1000 sein. Ein, bzw. ausschalten kannst du deine Uhr dann indem du
Label1.Caption := TimeToStr(Time);
Delphi-Quellcode:
schreibst.
//entweder
Timer1.Enabled := false; //Zum Ausschalten //oder Timer1.Enabled := true; //Zum Einschalten Bei der Analogen Uhr kann ich dir leider wenig weiterhelfen. (Muss wohl irgendwas mit Winkeln zu tun haben :mrgreen:) Man liest sich, Stanlay :hi: |
Re: Graphisch Digitale/Analoge Uhr
hmm, ich denke dass ist leider etwas zu einfach :pale:
das ganze soll hier so ähnlich geschehen, nur mit Zeichnen:
Code:
das wäre ein teil der anzeige, nur mit strichen, kanns leider nicht anders hier mit zeichen machen ;)
__
|| || || || __ || || || || __ Edit: Okey die Formatierung hier macht das ganze zunichte..jedenfalls soll es so gezeichnet werden wie in einer normalen Digitalanzeige einer Uhr, mit diesen Strichen. [edit=Luckie]Dann nehmen wir doch mal die Code-Tags. ;) Mfg, Luckie[/edit] |
Re: Graphisch Digitale/Analoge Uhr
Liste der Anhänge anzeigen (Anzahl: 1)
Zur Analogen Uhr:
Da hilft dir die Unit "math" und ein bisschen Mathe. Ich hab sowas auch mal gemacht. Ich häng das Prog einfach mal an. MfG Christian |
Re: Graphisch Digitale/Analoge Uhr
dankesehr, werd mir dass mal durchsehen. hast du etwas dagegen wenn ich teile deines codes verwende?
Damit bin ich schon mal mit einem Teil des Programms bestimmt weiter. |
Re: Graphisch Digitale/Analoge Uhr
Den Code kannst du ruhig benutzen. Aber wie gesagt: Das ist Mathe der 9. Klasse. Wenn du das deinem Lehrer vorstellen willst, dann solltest du den Code verstehen.
MfG Christian |
Re: Graphisch Digitale/Analoge Uhr
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:
Ich hoffe mal das dir das weiterhilft.
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; Gruß Robs [Edit]mann sollte sich das auch nochmal durchlesen was man postet :wall: [/Edit] grrrrrrrr :wall: :wall: :wall: |
Re: Graphisch Digitale/Analoge Uhr
@Spezi
Danke auch, werd mich nur vorher mal mit dem andrem Code beschäftigen! Ich glaube da muss brauch ich noch mehr Durchblick *g* |
Re: Graphisch Digitale/Analoge Uhr
@Chris
Bin ja gerade dabei deinen Code durchzustudieren..was genau bezeugst du mit
Delphi-Quellcode:
?
sin(DegToRad(h*30))
ich weiß, dass der ganze Teil der Anweisung mit
Delphi-Quellcode:
zu tun hat, macht das ganze einfach nur den Winkel auszurechnen? (den Teil nach * verstehe ich..)
x:= sin(DegToRad(h*30))*(pb.width/2-70);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 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