AGB  ·  Datenschutz  ·  Impressum  







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

Uhr Programmieren

Ein Thema von GroZ · begonnen am 6. Jul 2015 · letzter Beitrag vom 11. Jul 2015
Antwort Antwort
Seite 1 von 2  1 2      
GroZ

Registriert seit: 6. Jul 2015
Ort: Harz
167 Beiträge
 
Delphi 7 Personal
 
#1

Uhr Programmieren

  Alt 6. Jul 2015, 12:26
Ich soll eine Uhr programmieren. Ich habe bereits einen Kreis und davon den Mittelpunkt. Zeiger habe ich auch schon einen. Wie muss ich nun fortfahren? Bin mit Delphi nicht so gut.
Julian
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Uhr Programmieren

  Alt 6. Jul 2015, 12:31
Da bietet sich ein Timer an.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.007 Beiträge
 
Delphi 12 Athens
 
#3

AW: Uhr Programmieren

  Alt 6. Jul 2015, 12:33
Wie muss ich nun fortfahren?
Das hängt davon ab, ob der Zeiger ein Stunden-, Minuten- oder Sekunden-Zeiger ist. Abhängig davon musst du ihn jede Stunde, Minute oder Sekunde um 6° drehen.

Jetzt mal ehrlich: Was erwartest du denn für eine Antwort auf so eine Frage?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
GroZ

Registriert seit: 6. Jul 2015
Ort: Harz
167 Beiträge
 
Delphi 7 Personal
 
#4

AW: Uhr Programmieren

  Alt 6. Jul 2015, 12:40
Stunden und Minuten würden reichen. Ich habe Jetzt einen Kreis mit canvas.ellipse erstellt. dort mit MoveTo LineTo einen Zeiger vom Mittelpunkt aus gezogen. Wie kann ich ihn um 6 grad drehen lassen?
Julian
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Uhr Programmieren

  Alt 6. Jul 2015, 12:45
Stunden und Minuten würden reichen. Ich habe Jetzt einen Kreis mit canvas.ellipse erstellt. dort mit MoveTo LineTo einen Zeiger vom Mittelpunkt aus gezogen. Wie kann ich ihn um 6 grad drehen lassen?
.. mal in die Geometrie Unterlagen schauen..

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
GroZ

Registriert seit: 6. Jul 2015
Ort: Harz
167 Beiträge
 
Delphi 7 Personal
 
#6

AW: Uhr Programmieren

  Alt 6. Jul 2015, 12:47
Stunden und Minuten würden reichen. Ich habe Jetzt einen Kreis mit canvas.ellipse erstellt. dort mit MoveTo LineTo einen Zeiger vom Mittelpunkt aus gezogen. Wie kann ich ihn um 6 grad drehen lassen?
.. mal in die Geometrie Unterlagen schauen..

Grüße
Klaus
Hab das Tafelwerk neben mir es geht ja darum im Programm den Zeiger wie eine uhr ticken zu lassen sprich alle 60s um 6°
Julian
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#7

AW: Uhr Programmieren

  Alt 6. Jul 2015, 12:55
Schau mal unter Polarkoordinaten und karthesische Koordinaten.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#8

AW: Uhr Programmieren

  Alt 6. Jul 2015, 13:41
Ich soll eine Uhr programmieren. Ich habe bereits einen Kreis und davon den Mittelpunkt. Zeiger habe ich auch schon einen. Wie muss ich nun fortfahren? Bin mit Delphi nicht so gut.
Für einen Anfänger mag das vielleicht schon etwas zu anspruchsvoll sein, denn man muß sich, will man die Aufgabe lösen, ein wenig mit den Canvas-Funktionen auskennen. Zum Beispiel ist es wichtig, den richtigen Zeichen-Modus zu wählen, damit man den jeweiligen Zeiger ohne Verlust des Hintergrundes löschen und neu zeichnen kann. Dann ist auch noch wichtig, wie man die jeweiligen Positionen berechnet, zu denen gezeichnet werden soll. Ausgangspunkt ist ja immer das Zentrum des Kreises. Nun benötigt man noch die X-Y-Koordinate des Zielpunktes auf der Kreisfläche für den Befehl LineTo. Um diesen nicht ständig neu berechnen zu müssen, ist es sinnvoll, die Berechnung beim Programmstart nur einmal durchzuführen und die Koordinaten dann in einem Array[0..59,1..2] of Integer zu speichern. Die Berechnung selbst hast du hoffentlich im Unterricht gelernt, ich müßte sie auch erst nachschlagen, weil mir das nicht geläufig ist.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#9

AW: Uhr Programmieren

  Alt 6. Jul 2015, 15:09
@GroZ

Uhr mit Zeigern programmieren hat etwas mit Sinus, Cosinus und Pi zu tun.

Gegeben sind x1 und y1 als Position für Mitte. Indirekt ist noch der Winkel gegeben. Ein voller Kreis hat 360°, ein halber Tag 12 Stunden. Den Winkel für eine Stunde kann man somit mit einem Dreisatz berechnen, genauso wie den für eine Minute und eine Sekunde. Dann ist noch der Radius gegeben (Länge des Zeigers):

Delphi-Quellcode:
var
  al: Integer = 0;

function LineAnglePoint(Canvas: TCanvas; p: TPoint; r: Integer; Angle: Double): TPoint;
begin
  Result.X := p.X + Round(Cos(Angle * Pi / 180) * r);
  Result.Y := p.Y - Round(Sin(Angle * Pi / 180) * r);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  p1, p2: TPoint;
  r,
  x2, y2: Integer;
begin
  p1 := Point(100, 100);
  r := 100;
  Canvas.FillRect(Canvas.ClipRect);
  p2 := LineAnglePoint(Canvas, p1, r, al);
  Canvas.Polyline([p1, p2]);
  Inc(al);
  if al >= 360 then al := 0;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  DoubleBuffered := True;
  Timer1.Interval := 1;
end;
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#10

AW: Uhr Programmieren

  Alt 6. Jul 2015, 15:13
@Popov Ich dachte wir lösen hier keine Schulaufgaben, sondern geben Hilfestellungen
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:53 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