XY-Plot mit C++ zeichnen

Persönliche Seite #791855
Lesenswert?

Hmm. Die Vielzahl von kommerziellen und freien Plotlibraries (#) macht 
mich hier stutzig, dass es vielleicht nicht so einfach ist, selbst was 
ansehliches in annehmbarer Zeit zu produzieren.

Entweder es ist so kompliziert, dass man keinen einfachen Code angeben 
kann und deshalb die Beispiele oben schon Minimalbeispiele darstellen.

Oder ist es zu leicht und daher keinen Artikel in Codeprojekt wert. Dann 
würde ich mal in einem C++-Lehrbuch/Tutorial für Windows nachsehen. In 
dem Abschnitt in dem es um die grafische Grundroutinen geht wie Fenster 
öffnen, Koordinatensystem definieren, Farben, Linienarten und Breiten 
auswählen sowie Punkte zeichnen und Linien ziehen.

#
http://www.mathtools.net/C_C__/Graphics_and_Visualization/index.html
Gast #792174
Lesenswert?

Also die X und Y Achse hab ich soweit mal selber grafisch erstellt.
Jetzt möchte ich die Werte von einem Array der Länge 256 in diesem X/Y 
Diagramm grafisch darstellen. Wie könnte man da am besten vorgehen?
#799661
Lesenswert?

Es ist aeusserst gut moeglich, dass Visual Studio 6 ganz einfach nicht 
mehr unterstuetzt wird. Kein Wunder, denn diese Version ist uralt. Wenn 
du nicht beruflich dazu gezwungen bist, wuerde ich mindestens auf Visual 
Studio 2005 aktualisieren. Damit kannst du wenigstens anstaendiges C++ 
programmieren.
Gast #800957
Lesenswert?

Fehlermeldung von Visual Studio C++ 6.0:

--------------------Konfiguration: PLOT - Win32 
Debug--------------------
Kompilierung läuft...
Gnuplot.cpp
c:\temp\plot\gnuplot.cpp(374) : fatal error C1010: Unerwartetes 
Dateiende waehrend der Suche nach der Direktive fuer die vorkompilierte 
Header-Datei
Fehler beim Ausführen von cl.exe.

PLOT.exe - 1 Fehler, 0 Warnung(en)

Im Anhang hab ich mal mein Projekt in gezippter Form angehängt.

Die Bibliotheken "pdflib" und "gd" hab ich auch mal heruntergeladen.
Wie bindet man in Visual Studio C++ 6.0 die beiden DLL-Datein ein?
Angehängte Dateien:
Gast #800998
Lesenswert?

Hats bei C++ kein MoveTo und LineTo oder sowas? In Pascal ging das, 
einfach den Cursor irgendwo hin moven und dann eine Line von einem Punkt 
zum Cursor hin malen...

Eventuell kannst du das auch selber nachbauen, wenn du weißt wie viele 
Pixel dein Diagramm hoch und breit ist kannst du doch einen 
Umrechnungsfaktor errechnen und weißt wo dein Punkt hin muss.
#801221
Lesenswert?

gast wrote:
> Hats bei C++ kein MoveTo und LineTo oder sowas?

Du wirst lachen.
Aber in C++ gibt es streng genommen noch nicht mal einen
Bildschirm :-)

Alles was es gibt, sind 2 Ströme: Einer für Eingabe, einer für
Ausgabe. Was am anderen Ende des Stroms sitzt, interessiert C++
nicht.

Allerdings: Das ist die Sicht der Dinge in 'Standard'-C++
Selbstverständlich gibt es compilerspezifische Erweiterungen
die auf die spezielle Hardware / Betriebssystem zugeschnitten
sind.

Und selbstverständlich steht einem mit VC++ die komplette Windows-
API zur Verfügung.

> Eventuell kannst du das auch selber nachbauen, wenn du weißt wie viele
> Pixel dein Diagramm hoch und breit ist kannst du doch einen
> Umrechnungsfaktor errechnen und weißt wo dein Punkt hin muss.

Für ein brauchbares Diagrammsystem ist das sicherlich schon mal
ein Anfang. Aber es fehlt dann noch viel mehr.
zb. automatische Achsbeschriftung.
    automatisches Verteilen von Tickmarks
    Wollen wir Punkte oder Linien oder solls vielleicht eine
    Balkengrafik sein
    Farben wären auch nicht schlecht
    Wenn wir schon dabei sind: Die Beschriftung soll selbstverst.
    mit versch. Fonts in unterschiedlichen Farben möglich sein
    was ist mit einer Legende?
    Oh, drucken wäre auch super
    Export der Grafik als JPG, BMP, PNG, GIF oder Metafile
    ....

Du hast schon recht, das ist alles keine Raketentechnik und
durchaus machbar. Wenn jemand allerdings die Grafikbeispiele
von codeprojekt als kompliziert bezeichnet, dann ....
Gast #801855
Lesenswert?

Die Verwendung der präcompilierter Headerdateien hab ich soeben 
deaktiviert.
Nun erhalte ich diese Fehlermeldungen:

--------------------Konfiguration: PLOT - Win32 
Debug--------------------
Kompilierung läuft...
Gnuplot.cpp
c:\temp\plot\gnuplot.cpp(59) : error C2039: 'exit' : Ist kein Element 
von 'std'
c:\temp\plot\gnuplot.cpp(64) : error C2039: '_popen' : Ist kein Element 
von 'std'
c:\temp\plot\gnuplot.cpp(69) : error C2039: 'exit' : Ist kein Element 
von 'std'
c:\temp\plot\gnuplot.cpp(117) : error C2039: 'remove' : Ist kein Element 
von 'std'
c:\temp\plot\gnuplot.cpp(336) : error C2039: 'clock_t' : Ist kein 
Element von 'std'
c:\temp\plot\gnuplot.cpp(336) : error C2039: 'clock' : Ist kein Element 
von 'std'
c:\temp\plot\gnuplot.cpp(337) : error C2039: 'clock_t' : Ist kein 
Element von 'std'
c:\temp\plot\gnuplot.cpp(337) : error C2039: 'clock' : Ist kein Element 
von 'std'
c:\temp\plot\gnuplot.cpp(338) : error C2039: 'difftime' : Ist kein 
Element von 'std'
Fehler beim Ausführen von cl.exe.

PLOT.exe - 9 Fehler, 0 Warnung(en)

Welche Headerdateien muss ich nun noch einbinden?
Persönliche Seite #802287
Lesenswert?

Was bitte mag das für eine gnuplot-Version sein, die Du da zu übersetzen 
versuchst?

Die aktuelle Version 4.2.2 ist in C geschrieben und nicht in C++.

Die kann man unter http://www.gnuplot.info/ herunterladen.

Übersetzungsanleitung ist wie üblich in INSTALL enthalten:


> Using Visual C++ and compiling for Windows (32-bit, i.e. 9x and
> NT family)
>    nmake -f ..\config\makefile.nt

In diesem Makefile steht noch folgendes:
1
#   Added pdf support with pdflib as a sub of .\src
2
#     pdflib can be downloaded from http://www.pdflib.com
3
(...)
4
#   Added support for binary version of the GD library (bgd.dll) 
5
#     gdlib can be downloaded from http://www.boutell.com/gd
6
(...)
7
# To compile with Visual C: 
8
#  Download gdlib to ..\src\gdwin32
9
#  Download pdflib to ..\src\pdflib and compile it if you choose the source

Das sollte handhabbar sein.
Gast #810105
Lesenswert?

Ich hab die GNUPLOT Version "gp422win32.zip" für Windows 
heruntergeladen.
Ich konnte nach dem entpacken keine C und H Dateien finden. Wie kann ich 
jetzt GNUPLOT in Microsoft Visual Studio C++ 6.0 einsetzen?
#810114
Lesenswert?

Tilo wrote:
> Ich hab die GNUPLOT Version "gp422win32.zip" für Windows
> heruntergeladen.
> Ich konnte nach dem entpacken keine C und H Dateien finden. Wie kann ich
> jetzt GNUPLOT in Microsoft Visual Studio C++ 6.0 einsetzen?

Wenn ich das richtig sehe: So gar nicht.
Dein Programm erzeugt eine Scriptdatei und startet pgnuplot.exe
welches dann die Grafik erzeugt.

Das ist also eine Lösung, in der du deinen Plot nicht in deinem
eigenem Programm, in ein Fenster deines Programms einbinden kannst.
Gast #810149
Lesenswert?

>Ich benötige im Prinzip eine ganz einfache grafische
>Darstellung. Die Beispiele auf der Codeproject Seite sind sehr
>kompliziert.

was hast du erwartet? ne Banane?

such dir doch einfach eine Grafik-library die dir zusagt, arbeite dich 
da (ausführlich) ein und dann wirst du sehen dass sich solche Fragen 
erst gar nicht auftun.

ich benutze für grafische Darstellungen z.B. gtkmm (c++), gtk(c), 
OpenGL(c,c++), pygtk(python), und tkiner (python) such dir was aus!
Gast #1292546
Lesenswert?

Die Programmierung mit C++ 6.0 ist eine Grundlage die von einigen 
bedient wird. Der Satz das geht nicht berut auf die heutige Plastikwelt, 
wo die bunte Welt hohe Ansprüche an die farbenfrohe Welt..
eine Programmierung mit C++( egal welches) sollte eine grundlegende 
überlegte Arbeitsweise haben. Alle Erfolge in 5 Minuten sind auf der 
Ebene
motivativ falsch. Eine class usw sollte die Grundlage sein. Alles 
schnell
schnell ist bei Mi.C++ einfach falsch.
Gruss Gerdi, wenn jemand ernsthaft eine C++ Programmierung braucht ist 
das
nicht so..  tragisch. In Benutzung meiner bisherigen C++-Strukturen kann 
ein recht stabieles Programmkonzept realisiert werden. Mit C++Builder 
sinf farbige Oberflächen einfacher zu machen.
    Der Sieg des Hintern über das Hirn, ist die Entscheidung ich setze 
mich an den Compieler und verfolge ein Ziel über einen langen Zeitraum.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren