drawChar()

フォントの描画

フォントをスクリーン上に描画します。

以下の例では、Bボタンを押すたびに、事前に生成したフォントID=10のフォントを用いて固定の文字列を描画します。

void loop() {
	if (M5.BtnB.wasReleased()) {
		static int idx = 0;
		const char msg[3][16] = {
		   	"ABCD1234", "あいうえ", "やあ世界" };
		
		auto&& font = queryFont(10); // use font ID=10
		
		drawChar(
			font,         // フォント指定
			0, 240 - 30,  // 左上座標 (X,Y)
			msg[idx],     // 文字列
			RED,          // 文字色
			BLACK,        // 背景色
			0x01);        // オプション 0x01:BOLD
		
		idx++; if (idx >= 3) idx = 0;
	}
}

関数定義

int16_t drawChar(const FontDef& font, int32_t x, int32_t y, 
    uint16_t c, uint32_t color, uint32_t bg, uint8_t opt);
    
int16_t drawChar(const FontDef& font, int32_t x, int32_t y,
    const char *s, uint32_t color, uint32_t bg, uint8_t opt);
    
int16_t drawChar(const FontDef& font, int32_t x, int32_t y,
    const uint16_t* s, uint32_t color, uint32_t bg, uint8_t opt);

fontを用い、左上座標(x,y)に、文字色fg、背景色bg、オプションoptで文字を描画します。

uint16_t cをパラメターとして与えた場合は、Unicode c に対応する文字を1文字描画します。

const char *sをパラメータとして与えた場合は、sをUTF-8としてデコードし、文字列として出力します。

const uint16_t* sをパラメータとして与えた場合は、Unicode文字列として描画します。

optはオプションのビットマップです。以下の指定が可能です。

  • 0x01 - 太字指定

  • 0x02 - カーソルの描画

戻り値は、描画が行われればX(幅)方向に描画したピクセル数を返し、エラーなどが発生したときは0を返します。

実装について

実装時では以下のM5StackのAPIを利用しています。

  • M5.Lcd.startWrite()

  • M5.Lcd.setWindow()

  • M5.Lcd.endWrite()

  • tft_Write_16()

最終更新