AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi ich brauch dringende Hilfe bei meiner Analog Uhr!!!!!
Thema durchsuchen
Ansicht
Themen-Optionen

ich brauch dringende Hilfe bei meiner Analog Uhr!!!!!

Ein Thema von naschkatze1987 · begonnen am 31. Mär 2007 · letzter Beitrag vom 1. Apr 2007
Antwort Antwort
Seite 4 von 4   « Erste     234   
naschkatze1987

Registriert seit: 19. Sep 2006
Ort: Jacobsdorf
35 Beiträge
 
#31

Re: ich brauch dringende Hilfe bei meiner Analog Uhr!!!!!

  Alt 31. Mär 2007, 18:24
wenn ich refresh lösche, dann werdn die zeiger nich gelöscht, d.h. irgendwann is meine ganze uhr voller zeiger... und ich glaub anders kann man das nich lösn
naschkatze1987
*miau*
  Mit Zitat antworten Zitat
Klomeister

Registriert seit: 26. Mai 2006
10 Beiträge
 
#32

Re: ich brauch dringende Hilfe bei meiner Analog Uhr!!!!!

  Alt 31. Mär 2007, 18:44
raiguen kannst du mal erklärn warum dein Programm läuft? Ich versth nicht wieso der alte Zeiger, also der von der Zeit vorher nicht einfach stehen bleibt. Meiner meinung braucht man das Refresh damit immer nur der neue Zeiger gezeinet wird, bzw der alte nicht stehn bleibt und man dann ne Uhr voller zeiger hat. Und damit man nicht das ganz Hintergrundbild zeichnen muss speichert mans als TImage. Aebr wieso funktioniert das bei dir ohne refrsh, raiguen?
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#33

Re: ich brauch dringende Hilfe bei meiner Analog Uhr!!!!!

  Alt 31. Mär 2007, 18:52
hm... also ich hab's mit deinem letzen Code ausgetestet und es funktioniert einwandfrei!
So muss der Anfang der Timer1Timer-Proz aussehen:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var winkel : real;
    x, y, x1, y1, r, i : Integer;
    hour, min, sec, msec : Word;
begin
 Form1.Caption:=DateTimeToStr(Now);
 DecodeTime(Now, hour, min, sec, msec);

 r:=60;

// Hintergrund Ziffernblatt
Canvas.Pen.Color:=clsilver;
Canvas.Brush.Color:=clsilver;
Canvas.Ellipse(575,272,703,390);

// Ziffern
...
end;
Der Hintergrund Ziffernblatt MUSS immer wieder neu gezeichnet werden, sonst hast du natürlich irgendwann 60 Sekundenstriche darauf...

Wenn Du meinen Code aus der o.a. Routine entsprechend in Deinem eingearbeitet hast, dann dürftest du keine Probs mehr haben...
Ansonsten sh PN!
  Mit Zitat antworten Zitat
Klomeister

Registriert seit: 26. Mai 2006
10 Beiträge
 
#34

Re: ich brauch dringende Hilfe bei meiner Analog Uhr!!!!!

  Alt 31. Mär 2007, 18:55
Also ums ganz einfach zu formulieren:
Refresh weg und alte Zeiger mit zifferblatt übermalen!
ganz logisch eigentlich warum bin ich da nicht draufgekommen?
  Mit Zitat antworten Zitat
naschkatze1987

Registriert seit: 19. Sep 2006
Ort: Jacobsdorf
35 Beiträge
 
#35

Re: ich brauch dringende Hilfe bei meiner Analog Uhr!!!!!

  Alt 31. Mär 2007, 19:00
DANKE DANKE DANKE DANKE DANKE.................

Du bist n Schatz

Ich Dummerchen hab vergessn das Ziffernblatt neu zu zeichnen

supi supi supi

es funktioniert, ich krieg mich gar nicht mehr ein

DANKESCHÖN!!!!!!!!!!!!!!!!!!
naschkatze1987
*miau*
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#36

Re: ich brauch dringende Hilfe bei meiner Analog Uhr!!!!!

  Alt 31. Mär 2007, 19:03
@Klomeister:
Das Refresh bewrikt, dass der Hintergrund (Canvas) wieder das alte schnöde Silbergrau hat und letztlich nur die Uhr selber gezeichnet wird! Allerdings mit dem unschönen Effekt, dass irgendwann einmal die Uhr voller Sekundenzeiger ist*gg*

Darum habe ich in der Timer1Timer-Proz das hier zusätzlich eingebaut:
Delphi-Quellcode:
// Hintergrund Ziffernblatt
Canvas.Pen.Color:=clsilver;
Canvas.Brush.Color:=clsilver;
Canvas.Ellipse(575,272,703,390);

//Ziffern malen etc
...
Das bewirkt, dass zunächst erstmal wieder ein nackter Kreis gemalt wird, auf dem dann anschliessend wieder die Ziffern, Teilstriche etc gepinslet werden!

TImage: auf einem nackten Image mittels Canvas malen geht NICHT!!! Erst dann , wenn mit der Eigenschaft .Picture dem IMage ein BMP zugewiesen wird, ist ein Zeichnen von Liniene etc möglich! (siehe auch dazu die Delphi-Hilfe zu TImage -> Eigenchaft Canvas).

Sofern noch nicht geschehen: lade mein letztes gepostetes Projekt runter und schau dir die Routinen an

//EDIT: uups, man kommt mit dem Schreiben kaum nach, so schnell trudeln die Antworten ein

OKAY -> es dürften jetzt alle Klarheiten beseitigt sein...
  Mit Zitat antworten Zitat
SirTwist

Registriert seit: 28. Sep 2006
198 Beiträge
 
Delphi XE Professional
 
#37

Re: ich brauch dringende Hilfe bei meiner Analog Uhr!!!!!

  Alt 1. Apr 2007, 14:05
und als Feintuning könnte man jetzt das Berechnen der Koordinaten noch in eine Prozedur auslagern:

Delphi-Quellcode:
procedure GetCoors(winkel, radius: Float; var x, y: Integer)
begin
  winkel := winkel * pi/180;
  x := 639 + Round(cos(winkel)*radius);
  y := 331 + Round(sin(winkel)*radius);
end;
(ungetestet, einfach mal so runtergetippert)

Du hast mehrfach im Programm immer wieder Berechnung, die könntest du damit zusammenfassen:
Delphi-Quellcode:
  // Sekundenzeiger
  GetCoors(sec * 6, r, x, y);
  Canvas.Pen.Color:=clblack;
  Canvas.Pen.Width:=1;
  Canvas.MoveTo(639,331);
  Canvas.LineTo(x,y);
"sec * 6" deshalb, weil sich die 60 Sekunden auf 360° aufteilen und die eigentliche Berechnung damit sec * 360 / 60 wäre. Und ohne Überprüfung per Taschenrechner wage ich zu behaupten, dass 360/60 = 6 ist.

An dem Himmel müsste man noch feilen, die Übergänge sind zu hart hm, mal basteln...

PS: wenn ich gewusst hätte, dass es als ersten Preis ein Küßchen gab, hätt ich mich mehr ins Zeug gelegt
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


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 13:05 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