Grafisch aufgezeigtes verhalten eines Kondensators(AC/DC) C++/WinApi/DX9
-
Hallo,
ich würd gerne DX lernen. SO, mit Winapi hab ich ein hauch von Erfahrung.
Leider halt nur wenig.
Jetzt dacht ich mir ich mach ein Winanwendung, mit einem DX fenster kombiniert.
(Ich hoffe das ist möglich). So erhoffe ich mir mich in Winapi und DX zu festigen.Ehrlich gesagt hab ich keine Ahnung ob ich das schaffe, und werde wenn ja. Desöftern auf euch zurückgreifen müssen.
Werte für den Kondensator werden über buttons o. ähnlich eingegeben.
Einzig die Grafische ausgabe soll im Winfenster, ich vermute mal als child, ausgegeben werden. Vieleicht kennt ihr die Funktion eines Kondensators,
ich möcht halt die Spannungen und Ströme grafisch(als Diagramm, Sinus AC) ausgeben.Das mal für den Anfang, was haltet ihr davon?? Realisierbar?
Vielen dank,ciao
-
Na klar ist das realisierbar.
Eine Programm das DX nutzt ist doch eine Win32 Anwendung.
Du musst dafür sogar ein Fenster erstellen.
Obwohl ich fuer diese Aufgabe eher GDI nutzen würde, solange das Neuzeichnen der Graphen nicht wirklich mehr als 30x in der Sekunde erfolgen muss.
-
Ja, die GDI wäre schnell genug?
Ich möchte das gernr in echtzeit ausgeben.Das ausgabe fenster müsste ich doch als child erstellen, nicht?
-
Ich denke auch, dass man diese Aufgabe zunächst mit GDI lösen sollte. Es geht doch wohl mehr um das Prinzip, so dass man die Zeitskala auch "spreizen" kann.
-
genau,
bei meinen GDI versuchen hatte ich oftmals ein arges flimmern.
Kann man das mit einem "Backpuffer" irgendwie verhindern?
-
Nein, du musst kein Child Window erstellen.
Du kannst direkt in das Hauptfenster zeichnen.
Unter der WinApi holst du dir mit GetDC einen GDI-Kontext fuer den "Innenbereich" des Fensters.
Ich weiss nicht genau, was du mit Echtzeit meinst.
Die Frage ist, ob du die Graphen einmal zeichnest, nachdem der Anwender eine Eingabe gemacht hat, oder ob du irgendeine Art der Animation brauchst.
Mach das erstmal mit GDI, und bastel dir deine Algoritmen zusammen, wenn es ruckelt, kannst du immer noch auf DX umsatteln.
Gerade fuer technische Zeichnungen und Diagramme hat die GDI aber gute Funktionen, wie z.B. Skalierungsysteme.
Du musst dir darüber im Klaren sein, dass du mit DX quasi für alle zeichnerischen Dinge selbst verantwortlich bist.Das ist der Preis der Geschwindigkeit.
-
Echtzeit = animation
also das ich die Kapazität oder wasauchimmer ändere und ich das halbwegsflimmerfrei auf dem Bildschrim sehe
-
hosti schrieb:
genau,
bei meinen GDI versuchen hatte ich oftmals ein arges flimmern.
Kann man das mit einem "Backpuffer" irgendwie verhindern?Dazu kann ich nicht viel sagen, da ich deinen Zeichenalgorithmus nicht kenne.
Aber bestimmt lässt sich da einiges ändern.
Z.b nicht immer die ganze Zeichnung neu zeichnen, wenn nur ein Teil des Bildes von einem Fenster verdeckt war.Oder du nutzt einen Privat DC.
Oder du erstellst dir eine Off-Screen-Bitmap ,zeichnest darein, und blittest die dann immer.
Also schau dir am Besten nochmal deine Zeichenroutine an, wann und wieoft sie aufgerufen wird.Bestimmt lässt sich da noch einiges verbessern.Und sei experimentierfreudig
-
Meine Ausgabe ist ja ähnlich einer kurve.
Also werde ich wohl immer das ganze Grafikfenster aktualisieren müssen.
Wodurch das flimmern entstehen würde, anderseits ist es ja keine schnelle bewegung sondern kurze Wertänderungen und anschliessende neue ausgabe.
ALso werde ich vermutlich noch nicht mal ein flimmern haben,Weiss das grad jemand,
Muss ich die Linien(kurven) mit getpixel und Algo zeichnen oder gibts da neh funktion?
-
siehe z.B.:
http://www.henkessoft.de/WinAPI_7_GDI.htm
-
, wow.
Vielen dank, scheint sehr genau das zu sein was ich suche
-
Wie würdet ihr das eigentlich realisieren??
Als Dialog anwendung oder ein normales Fenster mit Dialogen(Buttons) vollgestopft?
-
Na wenn du ganz korrekt bist, machst du ein großes Rahmenfenster und realisierst die Eingabe über Steuerleisten.Natürlich beliebig ab und andockbar.
Die Ausgabe erfolgt dann in frei anordbaren Childfenstern, deren Ansichtsmodi über das Menü beeinflusst werden.Nagut, das ist warscheinlich etwas viel für den Anfang.Eigentlich unmenschlich, das über pure WinApi realisieren zu wollen.
Mach am Besten nur ein Fenster, und lasse den Einstelldialog(modal) dann über ein Menü aufrufen.Und zeichne dann in den Clientbereich des Fensters.
Lese vorher dessen Größe aus, und passe den Graphen dann entsprechend an.
Wenn du das dann hast, bist du schon recht weit gekommen.
-
Ich möcht gerne ein Titelmenu,
auf der linken seite buttons und eingabefelder(Kapazitäten, zeiten, Spannungen...) und paar regler, und dann links daneben Das Grafische ausgabefenster (ca.2/3 vertikal gesehen) irgendwie so hab ich mir das gedacht
-
Dieser Thread wurde von Moderator/in Korbinian aus dem Forum Projekte in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Nur so als frage, was macht mein Thread hier??
Ist doch ein von mir gestartete Projekt...
-
hosti schrieb:
Nur so als frage, was macht mein Thread hier??
Ist doch ein von mir gestartete Projekt...
*g* ja, aber es ist dein höchstpersönliches Projekt, und du stellst ja kein Team dafür auf.
Sei schonmal darauf gefasst, dass der Thread auch noch in C++ oder WinApi geschoben wird.
Zu deinem Layout: du möchtest also links am Rand eine Steuerleiste und davon dann links deinen Graphen?
Und wozu brauchst du dann noch ein Fenster ?
-
Oh ach so, naja ins WInapi gehörts in dem falle ja.
Ich möchte die Grafische ausgeabe nicht einfach ins Fenster zeichnen sondern ähnlich wie ein texteditor ein "optisch" in die tiefe versetztes pseudo fenster..
Ich hoffe du verstehst was ich meine
-
Ja, ich verstehe, was du meinst.
Entweder du erstellst ein Childwindow mit WS_BORDER,
oder du erstellst ein Controll, indem du als Klasse "Static" übergibst, bei der CreateWindowEx.
-
Ich denke ich werd es mit dem child realisieren,
schön wäre wenn der ganze rest dann grau wäre wie die buttons oder die menu leiste