GamebuinoMETAメモ - 2
ビットマップ文字表示した
こんな感じ。
8ピクセル四方の文字画像をペタペタ貼る簡易メソッド。
メモ
ArduinoのString型はUTF-8。
半角英数字は1バイト。
全角ひらがなカタカナと全角英数字は3バイト。
こんな感じのメソッド作ってペタペタ文字貼った。
void drawStr(int16_t x, int16_t y, String str){
uint32_t c;
int dx = 0;
int length = str.length();
for(int sp = 0; sp < length; sp++){
if(str[sp] < 0xe2){
//1バイトascii
c = uint32_t(str[sp]) - 0x20;
}else{
//3バイトひらがな と カタカナ と 全角英語記号数字
c = (uint32_t(str[sp] << 16) | uint32_t(str[sp + 1] << 8) | uint32_t(str[sp + 2])) - (uint32_t(str[sp] << 16) | uint32_t(str[sp + 1] << 8) | uint32_t(0x80));
if((uint32_t(str[sp]) == 0xe2) && (uint32_t(str[sp + 1]) == 0x80) && (uint32_t(str[sp + 2]) == 0xa6)){
c = 247; //「…」はUTF8で割り当てられていない場所を使う。
}else{
switch(str[sp + 1]){
case 0x80:
c += 0x0060;
break;
case 0x81:
c += 0x00a0;
break;
case 0x82:
c += 0x0e0;
break;
case 0x83:
c += 0x0120;
break;
case 0xBC:
c += 0x0000;
break;
case 0xBD:
c += 0x0040;
break;
}
}
sp += 2;
}
gb.display.drawImage(x + dx, y, strGrpImg, (c % 16) * 8, (c / 16) * 8, 8, 8);
dx += 8;
}
}
(※ただの抜粋なのでこれだけじゃ何もできません。ごめんよ…。)
考える力や応用力はどぶに落としてしまったので基本的に力業じゃぁい。