Forum: PC Hard- und Software Pixelgrafik in der Konsole


von Walter T. (nicolas)


Lesenswert?

Hallo zusammen,
ich mache gerade (ja, in einem stolzen Alter!) meine ersten Gehversuche 
mit C auf dem PC. Momentan stellt sich die Frage, wie man am besten eine 
128x64-Pixel-Anzeige darstellt. Schön muß es nicht sein, aber der Inhalt 
sollte erkennbar sein. Geht soetwas direkt in/aus einer 
Terminalemulation oder muß ich mich da direkt in ein GUI-Framework 
einarbeiten?

Warum ich das Betriebssystem nicht erwähne? Weil ich momentan noch die 
freie Wahl zwischen Debian und Windows 7 habe. Debian wäre mir momentan 
einen Tick lieber.

Viele Grüße
W.T.

: Bearbeitet durch User
von Max D. (max_d)


Lesenswert?

Das "klassische" wäre wohl ncurses, das läuft auf allem was man nicht 
mit einem Seilzug anmachen muss. :D

von Klaus W. (mfgkw)


Lesenswert?

Mit einer Terminalemulation geht es im Prinzip schon.
Man kann sich ein Textfenster mit dr gewünschten Anzahl Spalten und 
Zeilen machen, und darin Klötze ausgeben oder Leerzeichen.
Damit es auf den Bildschirm passt, in einer entsprechend kleinen 
Schrift.
Sieht aber wahrscheinlich doof aus.

Besser wäre es sicher, sich etwas mit einer der vielen Grafik-Libs zu 
beschäftigen (spontan fällt mir dazu Qt ein, aber da hat sicher jeder 
eine eigene Meinung).
Das wird unterm Strich auch nicht schwieriger sein, sieht dann aber 
schicker aus.

von Max D. (max_d)


Lesenswert?

Von der Komplexität her hat Klaus schon recht, zwischen Terminal und 
z.B. QT ist kein großer Unterschied. Zum ersten Ergebniss kommt man mit 
QT sogar schneller, da kann man nämlich im editor das fenster schön faul 
zusammenklicken :D.

von Walter T. (nicolas)


Angehängte Dateien:

Lesenswert?

Um das mal in den richtigen Rahmen zu rücken: Im Anhang sieht man die 
gewünschte Ausgabe (LCD-Emulation) in Matlab erzeugt. Soetwas würde ich 
gern in plain-C erzeugen, um einige Grafik-Funktionen am PC testen zu 
können. Hintergrund ist der, gleichzeitig Bildschirm-Ausgabe sehen zu 
können und mit dem Debugger Zugriff zu haben.

: Bearbeitet durch User
von Walter T. (nicolas)


Lesenswert?

Hoppla, da kamen ja schon schnell Antworten.

Gäbe es denn im Terminal die Möglichkeit, z.B. Viertelzeichen als Pixel 
zu nutzen? Dann würde schon alles gemütlich passen. Leider habe ich noch 
keine Standard-Terminal-Schriftart mit soetwas gefunden. Wenn ich naiv 
in der Konsole mit "putchar" von 0 bis 256 ausgebe, sind jedenfalls 
keine Klötzchen dabei.

QT....hm. Bis jetzt wirkte der Name schon ein wenig abschreckend. So 
groß und mächtig...
...leider kann ich die Einstiegshürde da noch gar nicht abschätzen.

Vielen Dank für die bisherigen Beiträge!

: Bearbeitet durch User
von 12V DC (Gast)


Lesenswert?

Walter Tarpan schrieb:
> Hallo zusammen,
> ich mache gerade (ja, in einem stolzen Alter!) meine ersten Gehversuche
> mit C auf dem PC.

Also grade als Anfänger würde ich mir so etwas nicht vornehmen. Das 
könnte sehr kompliziert werden. Es gibt zwar eine Lib, die aus Bildern 
einen C-Code macht(c't hacks Artikel: STM32F4-Discovery + VGA bilder 
oder so ähnlich), aber dass dann auf dem Terminal zeichnen zu lassen...
Wenn du aber wirklich willst, habe ich spontan dies gefunden: 
http://www.tutorials.de/c-c/232172-bild-konsole-einfuegen.html
mfg 12V DC

von Walter T. (nicolas)


Lesenswert?

12V DC schrieb:
> Also grade als Anfänger würde ich mir so etwas nicht vornehmen. Das
> könnte sehr kompliziert werden. Es gibt zwar eine Lib, die aus Bildern
> einen C-Code macht(c't hacks Artikel: STM32F4-Discovery + VGA bilder
> oder so ähnlich), aber dass dann auf dem Terminal zeichnen zu lassen...

Was ich bereits habe: Ein 1024 uint8_t großes Array, in dem die Bitmap 
als Pixelmuster vorliegt. Denn so wird es auch auf einem µC an ein 
Grafik-LCD geschickt.

Was mir fehlt: Dieses Pixelmuster auf dem PC anschauen zu können.

Im Notfall bleibt mir immer die Möglichkeit, aus diesem Array ein BMP zu 
erstellen - da brauche ich na nur noch den Header davorzukopieren - und 
auf die Platte zu schreiben. Aber das wäre der letzte Fallback.

Aber das Tutorial sieht schon einmal vielversprechend aus. Das läßt sich 
schnell ausprobieren - wenn es von MinGW unterstützt wird.

von 12V DC (Gast)


Lesenswert?

Ich habe hier noch mal etwas gefunden: 
Beitrag "C: Pixel auf dem Bildschirm ausgeben"
und hier:http://www.delphipraxis.net/106245-c-ein-pixel-zeichnen-3.html
Aber sonst kann man es ja auch schon mal mit irgendeinem anderen Zeichen 
Probierenn(z.B. *+ o.ä.). Das Bild müsste ja das selbe bleiben.

von TriHexagon (Gast)


Lesenswert?

Da ist definitiv SDL zu empfehlen. Die ist unter anderem für solche 
Zwecke gemacht. Du kannst einfach ein Fenster erstellen und dort deine 
Bitmap darstellen lassen -> SDL_CreateRGBSurface oder auch auf 
Festplatte speichern lassen. Sie ist einfach aufgebaut, für alle 
gängigen Platformen erhältlich und in C. Sowas in der Art musste ich 
auch mal machen.

von Walter T. (nicolas)


Lesenswert?

SDL sieht auf den ersten Blick wirklich sehr gut aus.

Danke für den Tipp!

Edit:

Die Einstiegshürde sieht wirklich extrem niedrig aus. Das erste leere 
Fenster ist schon da, d.h. der Build funktioniert.

Edit2:

Und das erste Bild ist zu sehen. Ich werde jetzt hervorragen schlafen. 
Danke für die Tipps!

: Bearbeitet durch User
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.