Hoppa till innehåll

[c++] Algoritm För Att Skriva Text På En 2d Bild


Vitdom
 Dela

Rekommendera inlägg

Tja, jag håller på och programmerar lite för G15 Keyboard LCDn. Nu är det så att jag inte kan få igång en del(där t.ex funktioner för att skriva text på LCDn finns) av SDKet som följer med produkten, så därför har jag bestämt att skapa egna funktioner.

 

När man skriver på LCDns bitmap som ser ut såhär:

char pixels[160*43];

så är värden >=128 "på" och <128 är "av".

 

För att bespara mig energi varje gång jag håller på med pixlarna har jag skapat en funktion som förenklar detta:

void setPixel(lgLcdBitmap160x43x1* bmp, int x, int y, bool set = true)
{
    bmp->pixels[y * 160 + x] = set?0xFF:0x00;
}

 

Origo är altså uppe i vänstra hörnet och x ökar åt höger och y ökar ner.

 

Det jag behöver är nu hjälp med att hitta på algoritmer för att skriva text på dessa pixlar.

 

http://www.logitech.com/lang/images/0/7687.jpg

Redigerat av Vitdom
Länk till kommentar
Dela på andra sajter

Ett tips av mig är att du har en 2d-array.

char pixel[160][43];

 

Sen får du fixa en struct för en bokstav. De kanske är 12 px höga och 3 till 7 px breda.

struct bitChar {
   char pixel[7][12];
   char width;
}

 

Därefter bör du göra ett av varje tecken till en sådan struct (alternativt göra en funktion som läser in en fil + bitmapsbilder).

 

Tilll sist är det en funktion för att skriva ut tecken på vissa positioner. Kanske så här.

void (char** GPixel, const char x, const char y, const bitChar** letter) {
   for (int i = 0; i<bitChar->width; ++i) {
      for (int j=0; j<12; ++j) {
         GPixel[x+i][y+j] = letter[i][j];
      }
   }
}

 

Det var vad jag orkade lägga ner tid på att tänka ut. Men jag tyckte att detta verkade vara de funktioner som behövdes. Sedan kan man bygga ut med funktioner för att skriva textsträngar och få radbyten osv, men det får du klura ut själv.

Redigerat av PunkArne
Länk till kommentar
Dela på andra sajter

Jo, jag antar väl att man får göra som du sa, skapa alla tecken för hand i en char vektor och sedan blitta dem på bitmappen. Typ det lättaste sättet om man inte ska använda några bibliotek i tredje part.

 

Nu är text funktionen färdig! Fungerar utmärkt! Bara att den inte stödjer tecken som åäö och bara har en storlek.

Redigerat av Vitdom
Länk till kommentar
Dela på andra sajter

Gå med i konversationen

Du kan skriva nu och registrera dig senare. Om du har ett konto, logga in nu för att posta med ditt konto.

Gäst
Svara på det här ämnet...

×   Klistrade in som rich text.   Klistra in som vanlig text istället

  Endast 75 emojis är tillåtet.

×   Din länk har automatiskt inbäddats.   Visa som en länk istället

×   Ditt tidigare innehåll har återställts.   Rensa redigeraren

×   Du kan inte klistra in bilder direkt. Ladda upp eller infoga bilder från URL.

 Dela

×
  • Skapa ny...