Autor Beitrag
Atticus
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 06.05.12 14:01 
Hallo Leute,

bin nun bei meiner nächsten Übung, Den "Rechner" von letztem mal hab ich dann mit Hilfe noch hinbekommen. Nun wirds gleich schon schwerer.
Ich soll eine Uhr bauen. Und zwar soll sie zwei beliebige Zeiten anzeigen. Einmal "digital" mit Zahlen und einmal eine Analoguhr.
Das Thema is wohl schon ziemlich durch, denn Google spuckte einiges aus, aber oft nunmal nicht wirklich was ich brauchte oder ein kam mit dem English nicht komplett zurecht.
Leider habe ich noch nicht wirklich viel. Wir haben noch den Zusatz die "Uhr" in einer eigenen Klasse abzuspeichern, diese habe ich nun erstellt. Jedoch waren in so ziemlich allen "Google-Lösungen" andere Strategien verfolgt worden.

Um mal ehrlich zu sein. Bisher habe ich die Form gezeichnet mit 4 Labels, zwei davon für die Orte und die anderen beiden sollen mal die Digitaluhr enthalten, hab da aber schon keine Ahnung wie ich die Uhrzeit da reinbekommen soll.

Dann habe ich noch einen Timer eingefügt und den Wert auf 1000 gesetzt, damit die Uhr im Sekundentakt aktualisiert wird.
Ich habe auch schon versucht mit Graphics/System Draw die Uhr zu malen, aber ich bekomm es einfach nicht hin.

Kann mich hier vielleicht wer ein wenig an die Hand holen und mir zeigen mit welchen Befehlen ich das realisieren kann und bei weiteren Fragen auch helfen?
Wäre echt sehr dankbar.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4796
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: So 06.05.12 15:07 
Hallo Atticus,

womit hast du denn am meisten Schwierigkeiten - mit dem Zeichnen oder der Mathematik?

Bei ersterem lies dir mal den Artikel Zeichnen in Windows-Forms-Programmen (Paint/OnPaint, PictureBox) durch.

Bei letzterem benötigst du die Kreisfunktion (bzw. Kreisrelation):
ausblenden Quelltext
1:
r*r = x*x + y*y;					

(r = Radius, x und y = Punkte auf der Kreislinie)

Umgestellt nach jeweils x und y ergibt dies (entsprechend Trigonometrie):
ausblenden Quelltext
1:
2:
x = r * sin(a);
y = r * cos(a);

wobei a (alpha) der Winkel (im Bogenmaß) ist.

Nun mußt du nur noch die Uhrzeit für beide Zeiger (Stunden und Minuten) in den jeweiligen Winkel umrechnen und die Zeiger als Linien vom Mittelpunkt bis zum Punkt (x,y) zeichnen.
Atticus Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 06.05.12 18:18 
Die Mathematik wäre weniger das Problem. Was mir da gefehlt hat hab ich mir rausgesucht und bisher denke ich, dass ich das hinbekäme.
Allerdings komme ich, wie du auch erwähnt hast, mit der Zeichenfunktion nicht klar.

Ich schaue mir auf jeden Fall mal deinen Link an. Vielen Dank dafür.
Atticus Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 08.05.12 09:19 
Also ich muss sagen, dass ich jetzt noch weniger verstehe als vorher. Habe mir den Beitrag mal durchgelesen und mal Beispiele abgetippt. Dann hat mit Visual Studio aber etliche Fehler angezeigt und man konnte natürlich nichts ausführen.

Gibts denn keine verstänldichere Erklärung? Kann mir bitte mal jemand sagen wie ich jetzt zum Beispiel nur das Ziffenblatt zeichnen kann.
mats74
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189
Erhaltene Danke: 26

Win 10
VS 2017/19, C++, C#
BeitragVerfasst: Di 08.05.12 10:00 
Hallo Atticus

Wie schon Th69 beschrieben hat, kannst Du auf dein Control das Ziffernblatt aufzeichnen.
Vielleicht hilft Dir folgender Code ein Bisschen weiter:
ausblenden C#-Quelltext
1:
2:
3:
4:
private void DeinControl_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.DrawLine(new Pen(Color.Black), 10105010);
        }

Damit zeichnest Du eine horizontale Linie.
Die Positionierung der Punkte innerhalb des Controls musst Du berechnen.
Die Aktualisierung der Berechnung erhälst Du durch die Ausführung deiner Timerklasse.
Den Rest kannst Du vom Post von Th69 ableiten und erstellen.

_________________
Gruss
mats74
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4796
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 08.05.12 10:01 
Hallo Atticus,

die Fehler liegen wahrscheinlich an fehlenden using-Direktiven (da diese aus Übersichtlichkeitsgründen meistens in den Beispielen weggelassen werden), ohne konkrete Fehlermeldungen kann man dir jedoch wenig helfen. Nichtsdestotrotz gehört es als Programmierer einfach dazu, Fehlermeldungen interpretieren und beseitigen zu können (s. z.B. myCSharp.de FAQ - [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen))!

Evtl. hilft dir der Code zu meinem Beispielprogramm Graph, da ich dort einen Funktionsgraphen und Achsen auf einem Panel zeichne.