Hi, ich benutze Microsoft Visual-C und suche eine Möglichkeit irgndwie (windows NT basiertes Betriebssystem) Pixelweise in der Konsole zu lesen. Ich möchte also zB ein "A" in der Console ausgeben (printf) und dieses mit 6*8 Pixel (breite/höhe) auslesen. Hat einer ne idee? Eventuell könnte man im Grafikpuffer lesen, oder?
Das dürfte nicht so richtig was werden Ich nehme an du willst Fonts abscannen. Die Font größe kann sehr variieren. Schon zu DosZeiten 8x8 CGA 8*14EGA 8*16 VGA und einige mit 9*X von MDA. Du könntest in ein Bitmap im Programm mit der gewünschten Schrift schreiben und dieses Bitmap pixelweise abscannen. Die Fonteigenschaften kannst du ja auch gleich abfragen. Das geht aber nicht mit printf sondern mit Win32 API Funktionen. Du willst ja auch nicht auf den Grafikkartenspeicher zugreifen sondern auf den Inhalt des Fensters. Du könntest natürlich auch einen Screenshot machen als Bitmap abspeichern und dann abscannen. Oder du nimmst die Fontdateien auseinander. Wenn du unbedingt auf der printf Ebene bleiben willst, es gibt da ein paar BIOS Grafikfunktionen die dich an die Internen Fonts der Grafikkarte ranlassen. Diese entsprechen allerdings nicht der Darstellung im Fenster! sondern sind die die die Grafikkarte bei einem BIOS Aufruf verwenden würde. Außerdem habe ich meine Zweifel was ein Visual Studio 6/2002/2003 zu einem Biosaufruf aus einer Win32 Executable sagen würde.
Zunächst einmal: Was genau ist das Ziel? Geht es darum, die in einem Konsolfenster ausgegebenen Zeichen eines Programmes zu lesen? Dafür gibt es Funktionen in der Win32-API, so daß keine selbstgebastelte OCR erforderlich ist. Ansonsten kann wie bei jedem anderem Windows-Fenster das Fensterhandle des Konsolfensters bestimmt werden und mit einem der BitBlt-Befehle der Inhalt in eine Memory-Bitmap kopiert werden, um auf die übliche Weise verwurstet zu werden. Sollte es hingegen nur darum gehen, die Bitmuster des verwendeten Zeichensatzes zu erhalten - die Standardschriftart des Konsolenfensters (bei der verschiedene Größen in Breite*Höhe angegeben werden) liegt in einem dokumentierten Dateiformat (*.FON) vor, es dürfte weniger Aufwand sein, die Bitmapdaten aus der betreffende Datei zu lesen.
Also im Prinzip möchte ich mir schnell mein 7x5 Charset zusammenbasteln. Ich habs schon mit "Terminal" größe 6 in eine Picturebox (TImage Equivalent unter Delphi) schreiben und anschließend auslesen, allerdings ist das keine "genormte" 5x7 Schrift (Ich weiß, DIE genormte gibt es nicht, aber der Zeichensatz für Alphanumerische LCDs muss doch auch irgndwo zu bekommen sein?) Ich glaub das mit dem Konsolenfenster war nicht so eine gute Idee ;)
Das Dateiformat der *.fon-Dateien, die mit Windows mitgeliefert werden, ist dokumentiert. Die für die Konsolfenster standardmäßig verwendete Schrift ist im Verzeichnis c:\windows\fonts gespeichert (mit Dateiattribut "versteckt") und heißt vga850.fon. Die anderen Varianten sind für andere Codepages zuständig.
Was sagst das nicht gleich, dass du einen Font brauchst. Vielleicht kannst Du mit dem angehaengten was anfangen. 7 Zeilen * 5 Spalten. Jedes Byte ist 1 Spalte. LSB ist das unterste Pixel.
Ah jut, danke schonmal. LSB unterstes Bit, gut. Und von links nach rechts nehme ich an? ;) @Rufus: Wo findet man denn eine Doku über FON schriftarten, nur zur Info? Habe kurz die Suche betätigt, allerdings konnte ich nicht so das richtige Suchwort finden. Und diese vga850.fon finde ich ebenfalls nicht bei mir auf dem Rechner( Ja, "Alle Dateien Anzeigen")
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.