Grafik in c++

Hallo!
Bin noch relativ neu in c++ und wollte wissen ob es in der standard bibliothek von c++ auch graphic funktionen gibt? hab gehoert, dass borlan compiler graphics.h haben, habe aber visual c++. gibt es moeglichkeiten ne grafik zu proggen bloss mit der standartbiblithek oder zumindest ner bibliothek die alle compiler haben?

Gruss rundell

Hi

du kannst dir unter Windows mal die GDI API ansehen, beispiele dazu und zu simplen Applikationen gibts bei www.winprog.net/tutorial

Damit kann man schön Linien usw. Zeichnen :smile:

Wenn du Bilder ändern willst würde ich dir eher zu ner Grafik Bibliothek (CxImage z. B.) raten.

wxWidgets hat auch ganz nette zeichen-Funktionen.

bye,
Christoph

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Auch hallo.

Mit den Möglichkeiten der MFC vom Visual Studio bleibt man bei 2D stehen. Wem das nicht reicht greift u.a. zu OpenGL -> http://www.opengl.org

Wenn es um Grafik geht, ist SDL[1] eine sehr zu empfehlende Bibliothek, die zumindest grundsätzliche Grafik-, Sound- und Eingabefunktionalität bietet. Eine Alternative (mit der ich allerdings persönlich keine Erfahrung habe) ist Allegro. Das arbeitet wohl auf einer etwas höheren Ebene.

Unter Windows gibt es natürlich noch DirectDraw und Direct3D, die allerdings im Gegensatz zu den oben genannten Libs nicht portabel sind.

[1] http://www.libsdl.org/index.php
[2] http://www.talula.demon.co.uk/allegro/

Halli Hallo!
Das ist ja alles schoen und gut, hat aber alles mit Bibliotheken und Api’s zu tun. Hat denn standard c++ ueberhaupt keine grafikfunktionen? sie koennen meinetwegen auch kompliziert sein, aber theoretisch muesste man doch alle bibliotheken aus dem standard krams zusammenstellen koennen…
Also die ganzen biblios die ihr mir genannt habt sind doch eigentlich auch mit c++ programmiert oder nicht?
gruss rundell
thx fuer alle antworten

Halli Hallo!
Das ist ja alles schoen und gut, hat aber alles mit Bibliotheken und Api’s zu tun. Hat denn standard c++ ueberhaupt keine grafikfunktionen? sie koennen meinetwegen auch kompliziert sein, aber theoretisch muesste man doch alle bibliotheken aus dem standard krams zusammenstellen koennen…
Also die ganzen biblios die ihr mir genannt habt sind doch eigentlich auch mit c++ programmiert oder nicht?
gruss rundell
thx fuer alle antworten

Hi,

Ums vorneweg zu sagen: Standard C++ hat KEINE Grafikfunktionen. Standard sachen sind nur Console, also std::string, vector, map usw.

Die mit Abstand einfachste „Bibliothek“ ist die Windows API mit den GDI Funktionen. Wie gesagt, ist nicht der Hammer aber auch nicht mies. Damit kannst schön Texte, Linien usw. malen und wenns dir Spaß macht sogar noch Bildchen einbauen.

Warum hat Standard C++ wohl keine Grafikfunktionen? Ganz einfach, da der Standard Kram Plattformunabhängig ist und Grafik alles andere als Unabhängig ist geht das nunmal nicht. So wirst du immer auf die System-API zugreifen müssen.

Willst du dir dies ersparen und gleich Cross-Platform schreiben (mach ich immer, weil ich jedes System mag :wink:) nimm dir wxWidgets. Es hat ungefähr die selben Funktionen wie die Windows API, funktioniert aber auf Linux, Mac und Windows.

Hab ich was vergessen?

bye,
Christoph

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Das ist ja alles schoen und gut, hat aber alles mit
Bibliotheken und Api’s zu tun. Hat denn standard c++
ueberhaupt keine grafikfunktionen?

Nein. Im Prinzip kann C(++) nichts weiter, als irgendwelche Daten an irgendwelche Stellen im Speicher zu schreiben, explizite Grafikfunktionen gibt es nicht.

Also die ganzen biblios die ihr mir genannt habt sind doch
eigentlich auch mit c++ programmiert oder nicht?

DirectX schon, die restlichen sind in C geschrieben und alle zusammen kümmern sich um die Kommunikation mit diversen Treibern, damit der Anwendungsentwickler das nicht mehr tun muss.

DirectX schon, die restlichen sind in C geschrieben und alle
zusammen kümmern sich um die Kommunikation mit diversen
Treibern, damit der Anwendungsentwickler das nicht mehr tun
muss.

Aber wie ist Direct X denn dann in c++ geschrieben, wenn C++ grafisch ueberhaupt nix kann? Wenn Direct X oder meineteweg auch die in c erstellten bibliotheken funktionen fuer grafik bereitstellen heisst, dass dass die sprache doch auch irgend was haben muss. koennt ihr mir da nicht weiterhelfen? wuerde mir gerne so ne eigene bibliothek basteln.
Gruss rundell32

DirectX schon, die restlichen sind in C geschrieben und alle
zusammen kümmern sich um die Kommunikation mit diversen
Treibern, damit der Anwendungsentwickler das nicht mehr tun
muss.

Aber wie ist Direct X denn dann in c++ geschrieben, wenn C++ grafisch ueberhaupt nix kann? Wenn Direct X oder meineteweg auch die in c erstellten bibliotheken funktionen fuer grafik bereitstellen heisst, dass dass die sprache doch auch irgend was haben muss. koennt ihr mir da nicht weiterhelfen? wuerde mir gerne so ne eigene bibliothek basteln.
Wie wurden denn die Bibliotheken geproggt?
Gruss rundell32

Hi,

Aber wie ist Direct X denn dann in c++ geschrieben, wenn C++
grafisch ueberhaupt nix kann?

Das stimmt. C++ kann graphisch „nix“, ausser asci-Zeichen
über die Standardausgabe zu schicken.

Wenn Direct X oder meineteweg
auch die in c erstellten bibliotheken funktionen fuer grafik
bereitstellen heisst, dass dass die sprache doch auch irgend
was haben muss. koennt ihr mir da nicht weiterhelfen?

Das Zauberwort heisst „API“. „Application Program Interface“.
Windows liefert hardwarenahe und maschinenabhängige nichtstan-
dard-Programme mit, die Du bei Programmstart laden kannst
(DLL’s, dynamische Bibliotheken). In diesen DLL’s sind
bestimmte Stellen markiert, diese Stellen kannst Du
auslesen und Funktionszeiger diesen DLL-Einsprungpunkten
zuordnen.

Du kannst diese "Bibliotheken auch „fest“ mit Deinem Programm
verbinden, dann heissen sie „statische Bibliotheken“, das
Prinzip ist dasselbe.

Dir stehen jetzt z.B. Grafikfunktionen zur Verfügung,
die auf das Zielsystem zugeschnitten sind. Eine solche
Bibliothek selbst zu schreiben, liegt ausserhalb Deiner
Möglichkeiten.

mir gerne so ne eigene bibliothek basteln.

Was Du machen kannst, ist - eine Bibliothek
sinvoll nutzen. Das ist für den Anfang auch
ganz gut. Wenn Du merkst, dass Dir manche
Dinge nicht reichen, dann bastelst Du eine
„übergeordnete“ Bibliothek auf Basis der
System-Grafikbibliothek.

Grüße

CMБ

Danke fuer deine Antwort.
Gibt es denn irgendwo ein Tutorial in dem man lernt die API’s zu benutzen ?
Windows ist aber eigentlich doch auch in c und assembly geschrieben also muesste es doch moeglich sein nicht betriebsystemabhaenige grafiken in c zu proggen. oder wie ist die windows grafik sonst entsatnden?
Tschuldigung dass ich so seltsame fragen stelle

Gruss rundell32

Hi,

Gibt es denn irgendwo ein Tutorial in dem man lernt die API’s
zu benutzen ?

Ja, z.B. hier:
http://www.iseran.com/Win32/FAQ/faq.htm
http://www.codeproject.com/gdi/
oder
http://www.codeproject.org/dll/
oder 1 Mio andere :wink:

Windows ist aber eigentlich doch auch in c und assembly
geschrieben also muesste es doch moeglich sein nicht
betriebsystemabhaenige grafiken in c zu proggen.

Sicher ist das möglich.
Du solltest nur beachten, dass heutzutage eine
„Linie“ oder ein „Viereck“ vom Prozessor
der Grafikkarte erzeugt wird.

oder wie ist
die windows grafik sonst entsatnden?

Hier mehr dazu:
http://www.cmkrnl.com/faq01.html
oder hier:
http://www.awprofessional.com/bookstore/product.asp?.. Buch anschauen&redir=1

<u>Basics of kernel-mode driver</u> development
- ...

Viel Spass!

Grüße

CMБ