Forum: PC-Programmierung X/Y Plot mit C++


von keule (Gast)


Lesenswert?

Ich verwende als Programmierumgebung Microsoft Visual Studio 6.0 C++.
Bisher hab ich erreicht das ein bmp Bild eingelesen werden kann und 
dieses
in Graustufen umgewandelt werden kann. Nun möchte ich ein Histogramm 
grafisch darstellen. Gibt es irgendwo einen Sourcecode, den man nur 
einbinden muss?

von Daniel S. (theoretiker)


Lesenswert?

http://www.gnuplot.info/faq/faq.html
Punkt 6.8

Wie es genau über die Pipe abgewickelt wird, weiss ich leider nicht.

von Christian R. (supachris)


Lesenswert?

Ihr mit eurem GnuPlot immer. ;) Viel schöner, und direkt zum integrieren 
in die GUI: http://www.mitov.com/html/plotlab.html

von Chris (Gast)


Lesenswert?

> Ich verwende als Programmierumgebung Microsoft Visual Studio 6.0 C++.

Visual C++ 6 ist vollkommen veraltet, nimm lieber eine der modernen
Visual-C++-Versionen (mit der Express-Version gibt es die sogar
kostenlos). Du wirst heutzutage mit der Version 6 einfach keine Freude
mehr haben, weil du alle naselang in irgendwelche Probleme durch die
mangelhafte C++-Umsetzung rennen wirst. Sehr viele, auch sehr
grundlegende und einfache, C++-Programme lassen sich mit VC6 nicht
kompilieren, weil dieser Compiler nicht im geringsten standard-konform
ist.

Tu dir selbst einen Gefallen und gib diesem Antik-Stück seine
wohlverdiente letzte Ruhe.

von keule (Gast)


Lesenswert?

Wenn ich C++ MFC Version downloade und verwende, muss ich da was 
bezahlen?

von keule (Gast)


Lesenswert?

Kennt von euch jemand "zedGraph" ? Mit dieser Software kann man auch 
Grafiken plotten. Diese Software wurde in C# geschrieben. Kann man 
eigentlich die DLL in MFC C++ verwenden?

von Tobias T. (thelaughingman)


Lesenswert?

Was hältst du von sowas ?
Hab nur mal eben schnell gesucht:
http://www.codeproject.com/KB/miscctrl/pgllib.aspx

Visual Studio 2008 Express C++ gibt es kostenlos hier:
http://www.microsoft.com/germany/Express/download/default.aspx

Ich verwende die Professional Version - habe aber gehört das man unter 
Umständen bei der Express Version noch das Platform SDK installieren 
muss.
Infos hier:
http://blogs.msdn.com/windowssdk/archive/2008/02/22/using-visual-c-2008-express-with-the-windows-sdk-short-version.aspx

von Chris (Gast)


Lesenswert?

> Wenn ich C++ MFC Version downloade und verwende, muss ich da was
> bezahlen?

Jein. MFC wird für neue Programme nicht mehr empfohlen, es ist einfach 
viel zu alt. Aber MFC kostet Geld, ja.

von keule (Gast)


Lesenswert?

Ich hab in mein Visual Studio 6.0 C++ Programm die GUI von der Homepage 
http://www.mitov.com/html/plotlab.html eingebunden. Ich kann von den 
Darstellungsarten zwischen Scope und Waterfall wählen. Um nun ein 
Grauwerte Histogramm grafisch auszugeben, da hab ich noch Probleme. Kann 
mir dazu jemand helfen?

von keule (Gast)


Lesenswert?

Beispiel mit Waterfall:
1
float SampleDataArray[ 255 ];
2
  
3
for( int i = 0; i < 255; i ++ )
4
  SampleDataArray[ i ] = rand()-16000;
5
  
6
Waterfall.Data.AddData( SampleDataArray, 255 );

Nun hab ich da folgendes Problem. Ich möchte das nur ein Wert pro 
x-Position darstellen. Die x-Achse geht von 0 bis 255. Wie kann ich dies 
mir "plotLab" realisieren?

von Christian R. (supachris)


Lesenswert?

Für dein histogramm brauchst du doch nur das Scope. Dann einfach ein 
Array mit 256 Elementen (x-Achse) und die Elemente sind dann die Höhe. 
dann musst du noch irgendwo auf "bars" bei der Darstellung umstellen. 
normal sind ja durch interpolation verbundene Linien. Es gibt aber auch 
so eine Art Säulendiagramm... weiß leider ausm Kopf nicht genau, wie das 
hieß.

von keule (Gast)


Lesenswert?

Vielen Dank für die Hilfe. Das wäre super wenn dies so gehen würde. Ich 
hab bisher alles mögliche durchsucht. Ich weiss nicht wie man die "Bars" 
bzw. "Säulendiagramm" einstellen kann.

von Christian R. (supachris)


Lesenswert?

Ich kann´s dir morgen zeitigstens sagen. In meiner Diplomarbeit: 
http://supachris.homeip.net/Diplomarbeit.pdf auf Seite 61 oder so siehst 
du, wie das aussieht.

von keule (Gast)


Lesenswert?

In der Header Datei "CSLScope.h" hab ich etwas entdeckt.
Es gibt ein Aufzählungstyp mit dem Namen "CTSLScopeChannelMode".

enum CTSLScopeChannelMode { cmLine, cmBar, cmPoint };

Ich weiss allerdings nicht was ich nun genau tun muss, damit ich das 
Säulenformat nutzen kann.

von Simon K. (simon) Benutzerseite


Lesenswert?

keule wrote:
> In der Header Datei "CSLScope.h" hab ich etwas entdeckt.
> Es gibt ein Aufzählungstyp mit dem Namen "CTSLScopeChannelMode".
>
> enum CTSLScopeChannelMode { cmLine, cmBar, cmPoint };
>
> Ich weiss allerdings nicht was ich nun genau tun muss, damit ich das
> Säulenformat nutzen kann.

Dann lies die Doku.

von keule (Gast)


Lesenswert?

In der Doku steht auch nicht viel drin. Es sind da keine kleinen 
Beispiele enthalten.

von Christian R. (supachris)


Lesenswert?

Doku gibts leider wirklich nicht viel. Ich hab´s über die Drop-Down Box 
der IntelliSense gefunden. Schließlich wird einem ja von Visual Studio 
alles angeboten, was man mit den Klassen-Membern machen kann.

von keule (Gast)


Lesenswert?

Was meinst du mit Drop-Down Box der IntelliSense ?

von keule (Gast)


Angehängte Dateien:

Lesenswert?

Ich hab in der Hilfe was gefunden, ich weiss nicht wie man die Grafik so 
einstellen kann, das sie so aussieht wie das zweite Bild.

von Christian R. (supachris)


Lesenswert?

http://sapphiresteel.com/IMG/png/intellisense.png Automatisch 
Vervollständigung. Somit kannst du dich durch alle Klassen-Member usw 
hangeln.

von Christian R. (supachris)


Lesenswert?

So einfach geht das:
1
m_Scope.Channels[0].ChannelMode = CTSLScopeChannelMode::cmBar;

von keule (Gast)


Lesenswert?

Das mit dem Intelliisense funktioniert bei mir nicht. Wieso, das weiss 
ich auch nicht.

von Daniel (Gast)


Lesenswert?

gab's das je in VC6?

von Christian R. (supachris)


Lesenswert?

Klar. Hat aber nur sporadisch funktioniert. Und aktivieren muss man es 
glaub auch irgendwo in den Optionen. Naja, wie fast alles an VC++ 6.0 
ein Graus.

von keule (Gast)


Lesenswert?

Ja und wo muss man das in VC++ 6.0 aktivieren?

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.