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
Perlsau
(Gast)

n/a Beiträge
 
#1

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
 
#2

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
 
#3

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
Benutzerbild von baumina
baumina

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

AW: Uhr Programmieren

  Alt 6. Jul 2015, 15:15
Na wenigstens haben dann alle schlauen Schüler, die hier lesen, die selbe Lösung.
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.629 Beiträge
 
Delphi 12 Athens
 
#5

AW: Uhr Programmieren

  Alt 6. Jul 2015, 15:26
Na wenigstens haben dann alle schlauen Schüler, die hier lesen, die selbe Lösung.
Nicht nur die schlauen...
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: Uhr Programmieren

  Alt 6. Jul 2015, 17:46
Dann zeichnet man das ganze noch auf ein Bitmap im Speicher und kopiert es alle Sekunden auf den Canvas der Form. Dann wäre es perfekt.
Michael
Ein Teil meines Codes würde euch verunsichern.

Geändert von Luckie ( 6. Jul 2015 um 20:35 Uhr)
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Uhr Programmieren

  Alt 6. Jul 2015, 20:34
Ich bin hier mal mit den Feudel durch.
Einige Beiträge könnte es erwischt haben.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#8

AW: Uhr Programmieren

  Alt 6. Jul 2015, 20:50
Mutter, wir danken Dir
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#9

AW: Uhr Programmieren

  Alt 6. Jul 2015, 21:01
Dem kann ich nur beipflichten, das ist voll in Ordnung so!
  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 00:17 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