VB2005: Wie Bitmap-Zeichensatz statt DrawString auf PictureBox.Image anwenden

UTA2000

Grünschnabel
Hi,

Ich programmiere seit ca. einer Woche mit VB2005 Express. Ich arbeite momentan gerade an einem Programm welches mir den Inhalt einer PictureBox auf mein LCD (meiner G15-Tastatur) sendet. Am Ende soll das Programm im Hintergrund laufen und in festen Zeitabständen (ca. alle 30Sek) neue (WaKü-Temperatur-) Informationen anzeigen.

Die Übermittlung des PictureBox-Inhalts an das LCD klappt bereits problemlos: Ich prüfe jeden Pixel der PictureBox auf den Farbcode (kann nur schwarz oder weiß geben). Ist nicht gerade das performanteste (ich weiß), aber ich hab nix besseres und größere Probleme :)

Nun jedoch zu meinem Problem: Die dynamischen Temperatur-Informationen bekomme ich momentan per DrawString-Funktion an die gewünschte Position in der PictureBox. Nur sind alle Fonts entweder zu groß (JA, ich habe bereit sehr kleine Fonts aus dem Netz gezogen! :) ) oder unleserlich.

Bereits für dieses und auch folgende Projekte ist es also von großer Bedeutung, möglichst wenig Raum pro Buchstabe zu verbrauchen (LCD hat 160x43 Pixel, sw). Deshalb habe ich einen Bitmap-Font gebastelt (siehe Anhang).

Dieser Bitmap-Font legt je Buchstaben zwar eine feste Höhe (7px) aber eben keine feste Breite fest (ist einfach bei Buchstaben wie "W" oder "I" ein zu großer Unterschied).
Mein Wunsch ist nun, ein Wort nicht per DrawString auf die PictureBox zu bekommen, sondern stattdessen jeden Buchstaben aus dieser Bitmap-Datei "zu holen" und auf die PictureBox zu zeichnen.

Folgendes ist dabei unklar/ungelöst:
1. Wie kann ich möglichst einfach für jedes Zeichen eines Satzes sein Pendant im Bitmap finden?
Mir schwebt dabei momentan eine Lösung vor, bei der ich je Zeichen im Programmcode die Bitmap-Position (As Point) und Breite (As Byte) fest deklariere. Und dann jeden Satz in einzelne Zeichen zerlege, mir das Bitmap-Pendant hole und in die PictureBox zeichne.
Habt ihr ne bessere Idee für das generelle Vorgehen?

2. Mal voraus gesetzt, das mein oben beschriebenes Vorgehen das "richtige" wäre: Wie kann ich denn nur einen bestimmten Bereich aus einem Bild an eine bestimmte Position in eine PictureBox kopieren?
Sorry, falls das mit irgend einem Befehl eigentlich ganz einfach geht, wie gesagt, ich mach VB erst seit letzten Freitag. Und das Problem bei VB2005 ist, dass man die Klassen kennen muss, um die Möglichkeiten/Befehle zu kennen :)

UTA
 

Anhänge

  • 25739attachment.gif
    25739attachment.gif
    317 Bytes · Aufrufe: 20
Hallo!

Wenn Du hier schon einen Thread anfängst, kannst ihn auch bitte einen Sinn geben,
indem Du uns mal verrätst was Du wie gelöst hast. :)

Ansonsten ist der Thread wertlos und kann gelöscht werden...
 
Ich habe das, WAS ich in meiner Problemstellung beschrieben habe, so gelöst, WIE ich es selbst vorgeschlagen habe.

Da niemand sich irgendwie dazu geäußert hat, hatte ich nicht die große Auswahl an Möglichkeiten.

Macht übrigens nen faden Geschmack im Mund: Ich habe zweimal diese Frage gestellt. Beide Male hat man mir zwar nicht geholfen, aber mich zurecht gewiesen. Zwar zu Recht, aber eigentlich wollte ich Hilfe... :rolleyes:

UTA
 
Na es geht hier ja auch um Anleitungen für Problemlösungen.
Ich muss ehrlich eingestehen, dass ich mir deinen Post nicht sehr genau durchgelesen hab.
Es kommt hier nur zu oft vor das Leute ein Problem posten und im Anschluss nur das sie es gelöst haben.
Das interessiert hier aber die die Wasserstandmeldung von Oder und Neise. :D

Bitte nicht sauer sein ok. :)

Du hättest auch jedes Font einzeln in keinen Bilder unterbringen können,
sodass Du dir wegen der Breite keine Sorgen mehr hättest machen müssen...
Du verkettest dann nur noch anhand der Breite. Die Bilder kompilierst in deine Assembly hinein
und schreibst sie in eine Hashtable zB und als Schlüssel verwendest den Buchstaben ansich.
Convertierst deinen String in ein CharArray, iterierst durch dieses durch
und kannst Dir bequem anhand der einzelnen Buchstaben alle Bilder aus der HT holen.
 

Neue Beiträge

Zurück