Linie zeichnen mit C++



  • @SeppJ

    Hallo Sepp. Mein Ziel ist es, mathematische Funktionen zu zeichnen. Etwa eine Parabel (Quadratfunktion). Dazu muss ich einzelne Pixel setzten können. Es ist mir dies übrigens jetzt mit SFML gelungen auf Linux.
    Juhui!



  • achja wenn du pixel setzen willst, musst du SetPixel(hdc, xcoord, ycoord, RGB(rval, gval, bval)) verwenden. geht doch alles ganz einfach.🙄



  • @Wade1234

    Muss man da noch eine spezielle Bibliothek einbinden? Also für SetPixel?



  • also es funktioniert halt nur unter windows, aber im prinzip kannst du ab zeile 58 ganz normal SetPixel aufrufen. in einem "richtigen" programm würde man das natürlich alles in unterfunktionen auslagern usw., aber wenn du "nur mal ein bisschen malen" möchtest, geht das so. das programm müsstest du einfach so mit copy & paste übernehmen können.



  • @Wade1234

    Also dieser Code funktioniert bei mir in Visual Studio nicht.
    Vielleicht habe ich auch mein VS abgeschossen.



  • @spatz "funktioniert nicht" ist immer sehr ungenau. also ich habs eben getestet mit "Neues Projekt" -> "Windows-Desktopanwendung" (achtung: nicht -Assistent!) -> "Weiter, weiter, weiter" -> vorhandenen quelltext löschen -> meinen code einfügen. wenn du ein leeres projekt erstellst, musst du in den linker-einstellungen das subsystem auf "Windows" ändern.



  • @Wade1234

    Jetzt hat es funktioniert. Da kommt dann ein kleines Strichli, richtig?
    Ich ging drum auf Konsole-Anwendung zuerst.
    Vielen Dank



  • @spatz ja da kommt ein strich von (10, 10) nach (20, 20). die dimensionen bzw. eckpunkte des fensters sind in rect (zeile 48) gespeichert und für linien musst du eben zuerst MoveToEx und dann LineTo aufrufen.



  • Es gibt auch sf::LineStrip. Dann musst Du nur entscheiden, welchen Bereich und mit welcher Abtastrate Du darstellen willst (sprich, Du brauchst (X,Y) Vektoren) und dann werden die Punkte automatisch linear interpoliert).

    Jetzt könnte man natürlich wieder fragen, wozu Du denn Funktionen plotten willst. Dafür gibt es wieder fertige Bibliotheken, oder es geht in anderen Programmiersprachen leichter und schneller. Deshalb solltest Du Deine Fragen eher so stellen z. B. :

    Ich möchte gerne zu Lernzwecken selbst Kurven plotten in C++, wie gehe ich am besten vor?

    Das führt i. d. R. schneller zum Ziel 😉

    Von der WinAPI würde ich hier persönlich abraten:

    • C-Style Interface, mischt sich nicht gut und schön mit C++, kennt kein RAII etc.

    • Windows Only (prinzipiell).

    • Viel Boilerplate Code notwendig, allgemein mehr Aufwand/low-level.

    P.S.:
    Qt oder Qwt können auch plotten, und wenn Du GUI Elemente willst, bist Du auch schon bedient. Es gibt auch GNUPlot, damit habe ich selbst aber noch nie in C++ gearbeitet. Python+Matplotlib ist aber sicherlich einfacher.



  • @HarteWare

    Auf alle Fälle, vielen Dank für eure Hilfe.
    Habe wieder ne Menge dazugelernt.


Anmelden zum Antworten