タッチによる色変え
前回はタッチによる座標を表示しましたが、
今回はタッチしたエリアに色を付けて表現してみました。
サンプルコード
#include <M5Core2.h> typedef struct TS_TOUCH_GAME { unsigned short usCoord_X; unsigned short usCoord_Y; unsigned short usWidth; unsigned short usHeight; unsigned short usColor; } TS_TOUCH_GAME; const TS_TOUCH_GAME gtTouchTbl[] = { { 0, 0, 160, 120, RED }, { 160, 0, 160, 120, WHITE }, { 0, 120, 160, 120, BLUE }, { 160, 120, 160, 120, GREEN } }; const unsigned short gusTblNum = sizeof(gtTouchTbl) / sizeof(TS_TOUCH_GAME); void setup() { // 初期化 M5.begin(); return; } void loop() { unsigned short ausIdx = 0; TouchPoint_t atTouchPoint; // タッチ中 if( M5.Touch.ispressed() ) { // タッチしたX座標、Y座標を取得する atTouchPoint = M5.Touch.getPressPoint(); } // for( ausIdx = 0; ausIdx < gusTblNum; ausIdx++ ) { // 範囲チェック if( ((gtTouchTbl[ausIdx].usCoord_X <= atTouchPoint.x) && ((gtTouchTbl[ausIdx].usCoord_X + gtTouchTbl[ausIdx].usWidth) >= atTouchPoint.x)) && ((gtTouchTbl[ausIdx].usCoord_Y <= atTouchPoint.y) && ((gtTouchTbl[ausIdx].usCoord_Y + gtTouchTbl[ausIdx].usHeight) >= atTouchPoint.y)) ) { //四角形塗りつぶし M5.Lcd.fillRect( gtTouchTbl[ausIdx].usCoord_X, gtTouchTbl[ausIdx].usCoord_Y, gtTouchTbl[ausIdx].usWidth, gtTouchTbl[ausIdx].usHeight, gtTouchTbl[ausIdx].usColor ); } else { ; } } // Bボタン if( ((130 <= atTouchPoint.x) && ((200) >= atTouchPoint.x)) && ((240 <= atTouchPoint.y) && ((280) >= atTouchPoint.y)) ) { M5.Lcd.fillRect( 0, 0, 320, 240, BLACK ); } return; }
色で表現すると作った感が出てきますね。
ちなみに下部の〇ボタンも物理キーからタッチキーに変わったので座標判定が必要です。
詳しくはまた。