きのもの! 2020/06/13 02:29

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;
	}
}

(※ただの抜粋なのでこれだけじゃ何もできません。ごめんよ…。)
考える力や応用力はどぶに落としてしまったので基本的に力業じゃぁい。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

最新の記事

月別アーカイブ

限定特典から探す

記事を検索