■gb.display.setColor関数
Gamebuimo.hライブラリのgb.display.setColor関数は、すべての表示機能で画面上の描画に使用する色を変更します。
色は、WHITE、BLACK、GRAYまたはINVERTのいずれかになります。
ほとんどの表示関数は一つの前景色しか持ちませんが、一部の機能には背景色もあります。※例:gb.display.drawBitmap、gb.display.drawChar、gb.display.print
INVERTカラーはdrawCircle関数とfillCircle関数では動作しません。
これら関数は、使用するアルゴリズムが同じピクセルに何度も渡されるため、色その都度反転して矛盾するからです。
■使用例
gb.display.setColor関数を使ったArduinoIDEのプログラム例は図1の通りです。
このプログラムを実行するとsetup関数中のgb.begin関数でGamebuinoオブジェクトを初期化し、gb.titleScreen関数で画面に「Color example」と表示します。
スタート画面でキーボードの「K」(GamebuinoのA)ボタンを押すと画面上に矩形、ビットマップ、テキストが表示されます。
「←」ボタンを押すと「INVERT」、「→」ボタンを押すと「WHITE」、「↓」ボタンを押すと「GRAY」色に設定された各種キャラクタが画面に表示されます。
参考に図1プログラムをHEXファイルに変換し、それをSimbuino4Webでエミュレートした結果を図2に示します。
#include <SPI.h> #include <Gamebuino.h> Gamebuino gb; //ビットマップエンコーダを使用してエンコードされたビットマップ : 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("Color example")); gb.setFrameRate(42); //より良い結果を得るには、周波数を毎秒42フレームに設定します。 } void loop() { if (gb.update()) { //使用する色を黒に設定します。 2番目の色が指定されていない場合、背景は透明です gb.display.setColor(BLACK); gb.display.fillRect(34, 0, 16, 48); //使用可能な色は次のとおりです。 // 白 // 黒 // INVERT:負の効果 // GRAY:ピクセルをすばやく点滅させて画面の永続性を使用してグレーを作成する //実験では、毎秒42フレームで画面を実行すると、グレー //カラー値を変数に格納することができます:バイト色= BLACK; //背景と前景色が同じ場合、背景は透明のままです。バイト背景=白; //条件によって色を変えることができます //ここではボタンを使用します: if (gb.buttons.repeat(BTN_RIGHT, 1)) { color = WHITE; gb.display.println(F("WHITE")); } if (gb.buttons.repeat(BTN_LEFT, 1)) { color = INVERT; gb.display.println(F("INVERT")); } if (gb.buttons.repeat(BTN_DOWN, 1)) { color = GRAY; gb.display.println(F("GRAY")); } //ボタンが押された場合の背景色を変更する : if (gb.buttons.repeat(BTN_A, 1)) { background = BLACK; gb.display.println(F("BLACK")); } if (gb.buttons.repeat(BTN_B, 1)) { background = INVERT; gb.display.println(F("INVERT")); } //上で定義した色を設定する gb.display.setColor(color, background); //次にいくつかを描画します。 //矩形 gb.display.fillRect(20, 16, 16, 16); //ビットマップ gb.display.drawBitmap(20, 16, pointerBitmap); //いくつかのテキスト gb.display.cursorX = 40; gb.display.cursorY = 0; gb.display.fontSize = 2; gb.display.print(F("Text")); gb.display.fontSize = 1; //Cを使用した時にユーザーがタイトル画面に戻ることを許可する。 if (gb.buttons.pressed(BTN_C)) { gb.titleScreen(F("Bitmap example")); } } }
図2:プログラム実行結果
■構文
gb.display.setColor(foregroundColor,backgroundColor)
■パラメータ
foregroundColor :WHITE、BLACK、GRAYまたはINVERT
backgroundColor:WHITE、BLACK、GRAYまたはINVERT(optional)
背景色が指定されていない場合、背景は透明です。
■戻り値
ありません