Hallo Leute, ich habe einen Laptop, auf dem ist Linux Mint. Ich habe jetzt ein bisschen herumgefummelt und ein C Programm geschrieben, das mehrere BMP Dateien einliest und dann eine neue BMP Datei schreibt. Ich benutze den Editor Kate, speicher mit Strg s ab, geh in das Konsolen-Fenster, starte den gcc. Hurra keine Fehlermeldung. Dann starte ich das erzeugte Programm. Es macht ein bisschen Textausgabe auf dem Konsolen-Fenster und schreibt direkt eine BMP Datei auf die Festplatte. Und dann wechsel ich wieder das Fenster. Und dann klicke ich die erzeugte BMP Datei an und schau mir an was passiert ist. Meine Frage, wie kann ich in C direkt Grafik auf den Bildschirm bringen?
Eine relativ einfache Moeglichkeit waere direkt in den Linux Framebuffer zu schreiben. Dieser Code hier kompiliert problemlos und funktioniert auch: https://gist.github.com/FredEckert/3425429 Ist jetzt nicht die eleganteste Methode aber dafuer relativ simpel, zumal du die Daten eh schon in einem brauchbaren Format vorliegen hast. Wenn du allerdings eher etwas highlevel maessiges moechtest kannst du z.B. auch auf SDL zurueckgreifen: https://de.wikipedia.org/wiki/Simple_DirectMedia_Layer Und wenn du eine ganze GUI moechtest, dann ist z.B. Qt eine Moeglichkeit. Eine Uebersicht findest du hier: https://de.wikipedia.org/wiki/Liste_von_GUI-Bibliotheken
:
Bearbeitet durch User
Einfacher wäre wohl, von deinem Programm aus einen externen Image-Viewer (wie "display", "gliv", ...) zu starten:
1 | static void |
2 | display_image(const char *filename) |
3 | {
|
4 | if (strlen(filename) < 200 && strchr(filename, '\'') == 0) |
5 | {
|
6 | char buf[256]; |
7 | int res; |
8 | |
9 | // call external image viewer, here ImageMagick's "display"
|
10 | sprintf(buf, "exec display '%s'", filename); |
11 | res = system(buf); |
12 | if (res) |
13 | fprintf(stderr, "image viewer failed with error %d\n", res); |
14 | }
|
15 | else
|
16 | fprintf(stderr, "invalid filename '%s'\n", filename); |
17 | }
|
18 | |
19 | ....
|
20 | write_bmp("foo.bmp"); |
21 | ...
|
22 | display_image("foo.bmp"); |
23 | ...
|
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.