PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : einfache Grafik mit C++ und libpng erstellen



Hotnine
02-10-2002, 05:33
hi!

Ich bin gerade dabei einen eigenen Traffic-Counter zu schreiben(ich weiß, das es die Teile schon gibt ;)), nun wollte ich gerne die gesammelten Informationen grafisch darstellen und fragen ob ich dies in etwa so tun kann:

PNG bild(100, 100);//100*100 Pixel
bild.zeichne(255,255,255,0,0);//Pixel 0*0 weiß zeichnen

falls es so einfach mit der libpng geht, würde ich gerne wissen wie, wenn es nicht so einfach ist, möcht ichs trotzdem wissen :)

CU Till

anda_skoa
02-10-2002, 10:13
Ich bin mir nciht sicher, ob libpng eine C++ API hat, oder ob es dafür eine gibt.

Mein Vorschlag:
Image Magick, bzw dessen C++ API Magick++
http://www.imagemagick.org/www/Magick++/index.html

Ciao,
_

Hotnine
02-10-2002, 11:23
:)

sieht gut aus, aber leider versteh ich aus den 100 von texten, die da liegen wie ich mein eigentlich triviales Problem lösen kann.
könntest du mir eventuell den Syntax, für meine oben aufgeführte Anweisung für Magick++ posten? währe nett, aber vielleicht gibts ja auch andere Möglichkeiten, ich will ja bloß einzelne Pixel in einem Koordinatensystem ansprechen, das sollte doch eigentlich auch einfach gehen, odeR?
schonmal vielen dank

Cya Till

anda_skoa
02-10-2002, 11:56
Sie dir die Beispiele von Drawable an:
http://www.imagemagick.org/www/Magick++/Drawable.html

Du kannst es zB so machen, wie im zweiten Beispiel:
zuerst eine Liste von Anweisungen erzeugen und diese Liste dann ins Image malen.

Ciao,
_

Hotnine
02-10-2002, 15:16
cool!

vielen dank! genau das suchte ich, vielleciht meld ich mich ja schon bald wieder, wenn ich wieder mal mit meinem Latein am ende bin :)

Danke!!!

Hotnine
02-10-2002, 16:46
hi!

schon meine nächste Frage ;)
hab schon eine Grafik dargestellt usw. bloß nun frage ich mich, ob ich auch irgendwie ein dargestelltes Bild refreshen kann, also z.B. irgendwo ein Strich zeichnen.
ich konnte keine entsprechende Funktion finden, oder bin ich nur zu blöd zum Suchen?

CU Till

anda_skoa
02-10-2002, 17:16
Hmm, das versteh ich nicht ganz.

Wie zeigst du das Bild an?
Ich dachte du verwendest ImageMagick nur zum Erstellen der Bilder.

Ciao,
_

Hotnine
02-10-2002, 20:19
hi!

ich hab ein koordinatensystem erstellt und linien eingezeichnet, anschließend auf dem bildschirm ausgegeben, und nun wollt ich in die bestehende lienie einzeichnen ohne ein neues femster aufrufen zu müssen.
Habe einfach ein neues Objekt der Klasse Image erstellt, und dann mit View ausgegeb, mir sind ebend doch noch paar andere Sachen eingefallen, die ich machen könnte ;)

cu till

anda_skoa
03-10-2002, 09:41
Ah, da kann ich dir leider nicht helfen.
Ich hab Magick noch nie zum dasrstellen benutzt.
Da wirst du leider in der Doku nachlesen müssen.

Vielleicht geht eine erneutes View, nach den Änderungen.

Ciao,
_

Hotnine
03-10-2002, 10:28
schade, das mit dem view() ha tich auch gedacht, aber da macht er wenn du das alte fenster schließt, ein neues auf, wo das bild dann mit den geänderten information zu sehen ist. Und in der doku habe ich leider nichts gefunden, vielleicht gehts ja auch nicht :(
trotzdem vielen dank, das hat mir schonmal viel weiter geholfen

CyA Till

anda_skoa
03-10-2002, 11:21
Ich dachte urspünglich, du willst ein png generieren, um es dann auf einer Webseite anzuziegen.

Wenn du in einer X Anwendung Bilder dastellen willst, empfehle ich (wie immer :)) Qt.

Ciao,
_

Hotnine
04-10-2002, 06:14
hi!
ja eigentlich richtig, bloß mir ist da noch die ein oder andere idee gekommen:
1. die daten als bild abspeichern und anschließend per webserver in html-site anzeigen.
2. daten in echtzeit verarbeiten->daten in echtzeit anzeigen.

das problem an qt ist, damit hab ich (leider) noch nie was gemacht, aber wenn ihr mir sagt, dass qt dafür das beste wäre, dann hilft wohl alles nichts und ich geh auf die suche, nach nem qt tuturial.
CyA Till

anda_skoa
04-10-2002, 14:18
Qt ist nicht unbedinbgt das beste.
Nur halt eines der besten, wenn man auf X Sachen darstellen will.

Vielleicht ist es besser, die beiden Sachen (Web und X) nicht in einem Programm zu kombinieren.
Auch wegen der Abhängigkeiten.

Ciao,
_

Hotnine
04-10-2002, 22:53
klingt logisch,

bin auch dabei, die Programme modular also ein Server und verschiedene arten von dem Client zu erstellen.
hast du eventuell Vorschläge was ich für meine Vorstellungen verwenden sollte? das Magick++ ist ganz gut, aber ich glaube etwas überdemensioniert.
und Qt?! ich weiß nicht, ist doch mehr oder weniger mit Lizenzen verbunden, ich klaube da arbeite ich mich lieber in GTK ein, wenn ich schon ne grafische Umgebung neu kennen lerne, oder?
würde gerne deine Meinung hören. Und falls möglich paar Links zu tutorials oder Howtos, wenn möglich auf deutsch :)

Danke
CyA Till

anda_skoa
05-10-2002, 14:17
Original geschrieben von Hotnine
bin auch dabei, die Programme modular also ein Server und verschiedene arten von dem Client zu erstellen.


Das hört sich vernünftig an.
Ein Client/Server Modell erleichter erheblich das Anbinden neuer Frontends.
Sieht man zum Beispiel bei Licq sehr schön.



hast du eventuell Vorschläge was ich für meine Vorstellungen verwenden sollte? das Magick++ ist ganz gut, aber ich glaube etwas überdemensioniert.


Möglicherweise gibt es da bessere oder kleiner Lösungen.
Magick war die erste die mir so auf die Schnelle eingefallen ist.
Es gibt da auch etwas das GD oder so ähnlich heißt.
Wird oft für Grafiken in Webfrontends eingesetzt.

mal googlen....
Ah, hier http://www.boutell.com/gd/



und Qt?! ich weiß nicht, ist doch mehr oder weniger mit Lizenzen verbunden, ich klaube da arbeite ich mich lieber in GTK ein, wenn ich schon ne grafische Umgebung neu kennen lerne, oder?


Nunja, die Probleme mit der Qt Lizenz hat man eigentlich hauptsächlich unter Windows, da gibt es keine GPL Version.
Qt und GTK kann man ansich nicht vergleichen, GTRK ist ein GUI Toolkit, Qt ist eine Crossplattform C++ Biliothek, die unteranderem GUI Sachen enthält.

Ich komme aus der Java Welt und war die umfangreiche Klassenbibliothek gewöhnt.
Konnte mich daher weder mit C noch C++ recht anfreunden.
Aber dann hat mit ein Kollege den Tipp mit Qt gegeben und ich war nach ein bischen probieren ziemlich begeistert.

Die Qt ist der Java Class Lib sehr ähnlich. Es gibt Betriebsystem und Plattform unabhängige Wrapper für Sockets, Threads, File I/O und eben GUI.
Man kann sicher GUI auch mit anderen Toolkits crossplattform machen, aber man benötigt dann für die anderen Bereiche wieder anderere Crossplattform Bibliotheken, mit dem Nachteil, dass die potentiell andere API Gepflogeheiten haben.

Über GTK kann ich nicht viel sagen. Hab ursprünglich mal damit angefangen (vor Qt) und die C++ Bindings waren damals praktisch nicht benutzbar und bei der C API steig ich aus.
Es gibt hier im Forum aber einige GTK Entwickler, die können dir sicher auch sagen, welche Socket/Thread/etc libs damit gut zusammen passen.

Ciao,
_

Hotnine
06-10-2002, 11:36
hi!

also, nachdem ich jetzt erstmal weiß wo der unterschied zwischen qt und gtk ist, bin ich am überlegen mich doch in qt einzuarbeiten. Mein Problem ist nur, das ich damit noch nie gearbeitet habe :(
Hast du vielleicht paar Links zu Tutorials oder Howtos für qt? wenns geht in deutsch.
ansonsten werd ich wohl SDL für meinen echtzeit-Client benutzen und für die Grafiken, die anschließend per Browser abrufbar sind, werd ich wohl Magick++ nehmen.
der Grund dafür ist, das ich bei Magick die Grafiken hinbekomme, die ich mir vorstelle und für SDL habe ich paar gute Tutorials gefunden.
Aber wie gesagt falls ihr Tutorials für qt in deutsch kennt, dann nehm ich lieber qt.

CU Till

anda_skoa
06-10-2002, 12:46
Original geschrieben von Hotnine
also, nachdem ich jetzt erstmal weiß wo der unterschied zwischen qt und gtk ist, bin ich am überlegen mich doch in qt einzuarbeiten. Mein Problem ist nur, das ich damit noch nie gearbeitet habe :(
Hast du vielleicht paar Links zu Tutorials oder Howtos für qt? wenns geht in deutsch.


Deutsch fällt mir gerade keins ein.
Englsiche wurden hier schon sehr oft gepostet. Such mal mit der Suchfunktion.
Wenn du nichts findest, werd ich ein paar Links nochmal posten, aber ich denke du findest sie schon :)



ansonsten werd ich wohl SDL für meinen echtzeit-Client benutzen und für die Grafiken, die anschließend per Browser abrufbar sind, werd ich wohl Magick++ nehmen.


Da gibt es ein C++ GUI Toolkit, das auf SDL aufbaut.
ParaGUI, www.paragui.org.
Hab damit noch nicht damit gearbeitet, aber wenn es dir gefällt wäre ich über einen Bericht serh dankbar! :)

Ciao,
_