Forum: PC-Programmierung XY-Plot mit C++ zeichnen


von Tilo (Gast)


Lesenswert?

Ich bin gerade dabei ein XY-Plot mit C++ zu erstellen.
Weiss hier einer, wo man so ein Beispielcode zum Anschauen herbekommen 
könnte?

von Stefan B. (stefan) Benutzerseite


Lesenswert?


von Tilo (Gast)


Lesenswert?

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

von Stefan B. (stefan) Benutzerseite


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

von ... (Gast)


Lesenswert?

http://www.codeguru.com ist auch recht gut

von Christian R. (supachris)


Lesenswert?

ich nutze immer Plotlab: http://www.mitov.com/html/plotlab.html

von Tilo (Gast)


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?

von rene (Gast)


Lesenswert?

Kreuzchen, Kreis-chen....

von user (Gast)


Lesenswert?

Lin-chen ...

von Karl H. (kbuchegg)


Lesenswert?

Die Abarbeitung der Werte aus dem Array mit einem
Schleif-chen.

von Karl H. (kbuchegg)


Lesenswert?

Man könnte aber auch aus den Daten mehrere
Balken-chen oder ein Tört-chen machen :-)

von Matthias (Gast)


Lesenswert?

Gnuplot ?

von Tilo (Gast)


Lesenswert?

Ich suche nach einer lauffähigen GNUPLOT Version für Microsoft Visual 
Studio C++ 6.0. Ich hab mir zwei mal eine Version heruntergeleaden, 
leider lässt diese sich nicht kompilieren.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Was heißt "lässt sich nicht kompilieren"?

Die Fehlermeldung des Compilers lautet ziemlich sicher anders.

von Christoph _. (chris)


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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

gnuplot lässt sich mit VC++6.0 übersetzen, man muss allerdings noch zwei 
andere Bibliotheken besorgen und korrekt installieren; pdflib und gd.

von Tilo (Gast)


Angehängte Dateien:

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?

von noch ein gast (Gast)


Lesenswert?

Und? Dann stellst Du in Deinem Projekt die Verwendung präcompilierter 
Headerdateien ab. Fertig ist die Laube.

von Tilo (Gast)


Lesenswert?

Ich kann diese Einstellung nirgends bei mir finden.
Wo exakt kann man die präcompilierter Headerdatei deaktivieren?

von Tilo (Gast)


Lesenswert?

Kein Plan wo ich das deaktivieren könnte. Hab alles mögliche durchsucht.

von gast (Gast)


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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Wo exakt kann man die präcompilierter Headerdatei deaktivieren?

Da hast Du Dich aber gründlich in Dein Werkzeug eingearbeitet, wenn Du 
bereits sowas nicht finden kannst.

Project->Settings, Tab [C/C++] auswählen, dort unter Category 
"Precompiled Headers" auswählen und den Radiobutton vor "Not using 
precompiled headers" setzen.

von Karl H. (kbuchegg)


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 ....

von gast2 (Gast)


Lesenswert?

Sind die Bibliotheken "pdflib" und "gd" wirklich zwingend erforderlich?

von Tilo (Gast)


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?

von Rufus Τ. F. (rufus) Benutzerseite


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.

von Tilo (Gast)


Lesenswert?

Kann man überhaupt das GNUPLOT mit Visual Studio C++ 6.0 verwenden?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das schrob ich bereits vor zwei Tagen. Es lässt sich mit VC++6.0 
übersetzen.

von Tilo (Gast)


Lesenswert?

Ja welche woher bekomme ich die Version für Visual Studio C++ 6.0 ?

von ... (Gast)


Lesenswert?

Analphabet???
Blind???

Rufus hat Dir doch nun wirklich alles bereits vorgekaut!

von Tilo (Gast)


Lesenswert?

Sorry wenn ich hier nochmals nerve.
Ich konnte die GNUPLOT Version für Visual Studio C++ 6.0 nicht finden.
Kann mir jemand den exakten link zu dem Download geben?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Es gibt nicht "die GNUPLOT Version für Visual Studio C++ 6.0". Es gibt 
aber eine Version, die sich mit dem in VC6 enthaltenen Compiler 
übersetzen lässt, und die findet man hier:

http://downloads.sourceforge.net/gnuplot/gp422win32.zip

Wie weiter vorzugehen ist, habe ich bereits beschrieben, Du müsstest Dir 
das allerdings durchlesen.

von Tilo (Gast)


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?

von Karl H. (kbuchegg)


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.

von Eugen (Gast)


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!

von Gerdi (Gast)


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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das ist ja äußerst interessant. Nimm weniger von dem Zeug, das Du da 
nimmst, das tut Dir nicht gut.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.