NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

Arduino IDE(gb.display.drawBitmap関数の使い方)

■gb.display.drawBitmap関数
 Gamebuimo.hライブラリのgb.display.drawBitmap関数は、画面上にバイト配列であるビットマップを表示するために使用します。

■使用例
 gb.display.drawBitmap関数を使ったArduinoIDEのプログラム例は図1の通りです。
 このプログラムを実行するとsetup関数中のgb.begin関数でGamebuinoオブジェクトを初期化し、gb.titleScreen関数で画面に「Bitmap example」と表示します。
 スタート画面でキーボードの「K」(GamebuinoのA)ボタンを押すとgb.display.drawBitmap関数によって画面上に「☞」のビットマップが描画され、十字キーの入力方向に応じて「☞」の向きが変化します。
 またAボタンを押すと「☞」の図形は左右反転し、Bボタンを押すと「☞」の図形は上下反転します。
 参考に図1プログラムをHEXファイルに変換し、それをSimbuino4Webエミュレートした結果を図2に示します。

#include <SPI.h>
#include <Gamebuino.h>
Gamebuino gb;

//Bitmap Encoderを使用してエンコードされたビットマップ。これはhttp://gamebuino.com/wiki/index.php?title=Download
const byte pointerBitmap[] PROGMEM = {16, 22, 0xC, 0x0, 0x12, 0x0, 0x12, 0x0, 0x12, 0x0, 0x12, 0x0, 0x13, 0x80, 0x12, 0x70, 0x12, 0x4C, 0x12, 0x4A, 0xD2, 0x49, 0xB0, 0x9, 0x90, 0x1, 0x90, 0x1, 0x40, 0x1, 0x40, 0x1, 0x20, 0x1, 0x20, 0x2, 0x10, 0x2, 0x10, 0x2, 0x8, 0x4, 0x8, 0x4, 0xF, 0xFC,};

void setup() {
   gb.begin();
   gb.titleScreen(F("Bitmap example"));
}

void loop() {
   if (gb.update()) {
       gb.display.drawBitmap(0, 0, pointerBitmap);//ポインタービットマップを座標x = 0およびy = 0(左上隅)に描画します。
       gb.display.drawBitmap(18, 0, pointerBitmap, NOROT, FLIPH);//座標ビットx = 18、y = 0に水平フリップでポインタビットマップを描画する
       //フリップ値は次のようになります。
       // NOFLIP:ビットマップが反転しない
       // FLIPH:水平方向に反転(垂直ミラーを使用するなど)
       // FLIPV:垂直方向に反転(水平ミラーを使用する場合のように)
       // FLIPVH:水平方向と垂直方向に反転
       // 回転値は次のようになります。
       // NOROT:回転なし
       // ROTCW:時計回りに90°回転する
       // ROTCCW:時計回りに90°回転
       // ROT180:半回転
       // 回転とフリップの値をバイト単位で格納することができます:
       byte rotation = NOROT;
       byte flip = NOFLIP;

       //条件に応じて回転と反転を変更できます
       //ここでボタンを使ってビットマップを回転して反転させます
       if (gb.buttons.repeat(BTN_A, 1)) {
           flip = FLIPH;
       }
       if (gb.buttons.repeat(BTN_B, 1)) {
           flip = FLIPV;
       }
       if (gb.buttons.repeat(BTN_RIGHT, 1)) {
           rotation = ROTCW;
       }
       if (gb.buttons.repeat(BTN_LEFT, 1)) {
           rotation = ROTCCW;
       }
       if (gb.buttons.repeat(BTN_DOWN, 1)) {
           rotation = ROT180;
       }

       //座標x = 36とy = 0にポインタビットマップを描画し、上で定義した回転と反転
       gb.display.drawBitmap(36, 0, pointerBitmap, rotation, flip);

       if (gb.buttons.pressed(BTN_C)) { //Cを押したときにタイトル画面に戻る
           gb.titleScreen(F("Bitmap example"));
       }
   }
}
イメージ 1
図1:プログラム例
 

 イメージ 1
図2:プログラム実行結果

 

■構文
 gb. display.drawBitmap(x,y,bitmap,rotation,flip)

■パラメータ
 x:ビットマップを描画するx座標
 y:ビットマップを描画するためのy座標
 bitmap:バイト配列
 rotation(オプション):ビットマップの回転 NOROT, ROTCCW, ROT180, ROTCW
 flip(オプション):ビットマップの反転方法 NOFLIP, FLIPH, FLIPV, FLIPVH

■戻り値
 ありません
 

イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【Gamebuinoリファレンス】目次に戻る