www.mikrocontroller.net

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


Autor: Tilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei solchen Sachen schaue ich immer zuerst bei www.codeproject.com

Ausgewählte Sachen aus der Suche:

http://www.codeproject.com/KB/miscctrl/CustomContr...
http://www.codeproject.com/KB/MFC/WinTaskManagerHi...
http://www.codeproject.com/KB/miscctrl/Graphi.aspx

Autor: Tilo (Gast)
Datum:

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

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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_Visual...

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.codeguru.com ist auch recht gut

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich nutze immer Plotlab: http://www.mitov.com/html/plotlab.html

Autor: Tilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kreuzchen, Kreis-chen....

Autor: user (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lin-chen ...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Abarbeitung der Werte aus dem Array mit einem
Schleif-chen.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gnuplot ?

Autor: Tilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

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

Die Fehlermeldung des Compilers lautet ziemlich sicher anders.

Autor: Christoph __ (chris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

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

Autor: Tilo (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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?

Autor: noch ein gast (Gast)
Datum:

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

Autor: Tilo (Gast)
Datum:

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

Autor: Tilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kein Plan wo ich das deaktivieren könnte. Hab alles mögliche durchsucht.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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 ....

Autor: gast2 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sind die Bibliotheken "pdflib" und "gd" wirklich zwingend erforderlich?

Autor: Tilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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:
#   Added pdf support with pdflib as a sub of .\src
#     pdflib can be downloaded from http://www.pdflib.com
(...)
#   Added support for binary version of the GD library (bgd.dll) 
#     gdlib can be downloaded from http://www.boutell.com/gd
(...)
# To compile with Visual C: 
#  Download gdlib to ..\src\gdwin32
#  Download pdflib to ..\src\pdflib and compile it if you choose the source

Das sollte handhabbar sein.

Autor: Tilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann man überhaupt das GNUPLOT mit Visual Studio C++ 6.0 verwenden?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

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

Autor: Tilo (Gast)
Datum:

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

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Analphabet???
Blind???

Rufus hat Dir doch nun wirklich alles bereits vorgekaut!

Autor: Tilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Eugen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Gerdi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.