Entwickler-Ecke
Multimedia / Grafik - Eine Sanduhr programmieren
SonGoKi - So 14.01.07 12:12
Titel: Eine Sanduhr programmieren
Hi Leute,
ich bin ziehmlicher Noob in Sachen Delphiprogrammierung, jedenfalls was den grafischen Touch angeht.
Jetzt schon mal vielen Dank allen Denen, die mir helfen. :)
Es handelt sich, wie die überschrift schon verrät, um die Programmierung einer Sanduhr.
Im Anhang habe ich mal ein PNG, dass den ungefähren späteren Look der Sanduhr zeigen soll. Selbstverständlich
könnt ihr euch auch für einen anderen style entscheiden. Wichtig für mich ist nur, dass mir jemand diese Sanduhr
programmieren kann. Genau, ich habe wie schon gesagt keinen Peil, wie man das Lösen kann und desshalb habe ich auch
keine Vorlage. Diese Sanduhr sollte genormt an die Sekunden laufen , d.h. für jede Sekunde,Minute oder Stunde je
nachdem wie man es einstellt, soll ein Sandkorn nach unten fallen. Am besten sollte es eine procedure geben, wo man
das einstellt. Eine Init() procedur in der man nur die Zahl eintippen brauch (1[h],2[m],3[s]). Irgendwie so was. Naja
schon mal vielen Dank für eure Antworten und vor alledem für die Projekte. :wink:
ich zähle auf euch.
mfg SonGoKi
Xion - So 14.01.07 12:18
Hi
glaub nicht, dass es dir jemand so programmiert. Du könntest es mit Canvas machen (du legst die Sanduhr (ohne Sand) als BMP dahinter). Du kannst dann auf das Image malen und (Canvas.Pixels). Nur is das ziemlich langsam, müsste aber für deine Zwecke reichen. Wann ein Sandkorn runterfällt, is ja ganz einfach zu berechnen: *Zahl der Sandkörner* / *Anzahl der Sekunden, die die Uhr laufen soll* = *Anzahl der Sekunden, in der 1 Sandkorn fallen muss*
jaenicke - So 14.01.07 12:23
Erstmal :welcome: hier im Forum!
Hallo! Ich glaube, ich muss hier erstmal was klarstellen! Unser Forum ist dazu da, anderen bei der Umsetzung ihrer Projekte zu helfen, indem Fragen und Probleme bei der Umsetzung in Delphi geklärt werden.
Wir schreiben aber keine kompletten Projekte auf Anfrage...
Wenn du das möchtest, also einfach ein komplettes Projekt oder einen kompletten Quelltext, dann gehört deine Frage in die Jobbörse. ;-)
Umsonst wird dir hier aber wohl niemand ein komplettes Projekt oder so schreiben :!:
Du kannst gerne bitten, dass deine Frage in die Jobbörse verschoben wird, das macht dann einer der Moderatoren schon... ;-)
Ansonsten: Du kannst gerne konkrete Fragen stellen, wie du etwas bestimmtes umsetzt, wenn du an einer Stelle nicht weiterkommst. Dann solltest du posten, was du bereits versucht hast und wie dein bisheriger Quelltext aussieht.
Schönen Gruß,
Sebastian
SonGoKi - So 14.01.07 12:25
Erstmal vielen Dank, dass du dich so schnell gemeldet hast. Und jetzt zu meinen Problem. Die Idee ist schon mal sehr gut nur die Sandkörner programmieren zu wollen, aber wie schon gesagt ich habe keinen Plan von Grafikdarstellung in Delphi. Was ist Canvas? man ist das peimlich. Tut mir wirklich leid. Könnte mir einer so weiterhelfen.
jaenicke - So 14.01.07 12:33
SonGoKi hat folgendes geschrieben: |
Was ist Canvas? man ist das peimlich. Tut mir wirklich leid. |
Da muss dir weder was leid tun noch dir peinlich sein. Dass du am Anfang sowas nicht weißt, ist doch normal! Wir haben alle mal angefangen. ;-)
Hmm, ich glaube, du solltest dir jedenfalls mal erstmal ein paar Tutorials zu Delphi ansehen... ;-)
http://www.dsdt.info/tutorials/?cat=1
Besonders der "Delphi-Crashkurs von Christian Stelzmann" ist (finde ich) sehr gut!
Canvas ist die Leinwand, also das, wodrauf du zeichnest. Linien, Kreise, ...
Leg am besten mal ein TImage auf dein Formular. Das findest du unter Zusätzlich bzw. Additional in der Komponentenpalette. Dann klick mal doppelt auf dein Formular und gib in das dann erscheinende Quelltextfenster mal Image1.Canvas. ein. Mit dem Punkt hintendran. Dann sollten die zur Verfügung stehenden Prozeduren angezeigt werden. Ggf. drück Strg+Leertaste, damit die angezeigt werden.
Ich denke mal, die Prozeduren wie LineTo und so dürften selbsterklärend sein. Sonst drück mal F1 ;-)
SonGoKi - So 14.01.07 12:34
Da hast du schon recht, dass man eigentlich nur bei der Umsetzung helfen sollte. ich stimme dir da voll zu. Also frage ich anderes. Was ist Canvas? Und wie kann ich es zur Umsetzung der Sanduhr nutzen. Ich nehme ein Image als Vorlage. Hier die Sanduhr. Wie kann ich also mit Canvas dieses Image ansprechen und dort Pixel einfügen? Schon vielen Dank
SonGoKi - So 14.01.07 12:36
Ah ok jaenicke vielen Dank. Noch mehr?
jaenicke - So 14.01.07 12:38
Erstmal kannst du direkt in Delphi im Objektinspektor, wenn du das Bild auf dem Formular markiert hast, unter Picture das Bild laden...
Ansprechen dann wie gesagt mit Image1.Canvas., probier mal einfach ein wenig aus, was die einzelnen Befehle machen.
Xion - So 14.01.07 12:38
mal davon abgesehen, dass die Forum-Suche 53 Seiten zu Canvas findet:
so kannst du auf das Image Zeichnen:
Image.Picture.Bitmap.Canvas.Pixels[25, 25]:=clRed
Er macht also auf dem Bild an der Stelle 25/25 einen Roten Punkt.
Der Rest ist eigentlich nur noch Simulations-Arbeit:
-du musst die Grenzen der Sanduhr irgendwie wissen, um deine Sandkörner in die Sanduhr zu malen
-du musst dann immer das unterste Sandkorn fallen lassen
-du musst irgendwie das nachrutschen der Sandkörner berechnen
-du musst dir überlegen, wie sie sich unten anhäufen
aber die grafische Darstellung funktioniert immer so:
Image.Picture.Bitmap.Canvas.Pixels[25, 25]:=clRed
SonGoKi - So 14.01.07 16:07
Also vielen Dank Leute für eure geduld. Das mit canvas werde ich mal ausprobieren.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!