Создание сенсорных кнопок на Tft LCD (spfd5408)
- Войдите на сайт для отправки комментариев
Ср, 10/05/2017 - 17:49
Добрый день. Новичок в ардуино-программировании (то есть я) нуждается в помощи:
В тестовых примерах библиотек Adafruit имеются вот такие функции рисования и инициализации сенсорных клавиш. Все это прекрасно работает, рисует 3 кнопки в вертикальном отображении (столбец из кнопок).Однако мне в проекте понадобится еще больше кнопок. Каким образом можно добавить кнопки для горизонтального отображения ( например, 3 кнопки в строке) при том что, функция рисования использует тот самый массив buttonlabels?
//------------------------
for (uint8_t i=0; i<3; i++)
{
buttons[i].drawButton();
}
//-----------------------
void initializeButtons() {
uint16_t x = 80;
uint16_t y = 160;
uint16_t w = 150;
uint16_t h = 40;
uint8_t spacing_y = 20;
uint8_t textSize = 1;
char buttonlabels[3][20];
strcpy(buttonlabels[0], utf8rus("Старт"));
strcpy(buttonlabels[1], utf8rus("Загрузка"));
strcpy(buttonlabels[2], utf8rus("Выход"));
uint16_t buttoncolors[30] = {RED, RED, RED};
for (uint8_t b=0; b<3; b++) {
buttons[b].initButton(&tft, // TFT object
x, y+b*(h+spacing_y), // x, y,
w, h, WHITE, buttoncolors[b], WHITE, // w, h, outline, fill,
buttonlabels[b], textSize); // text
}
buttons_y = y;
}
Для роста, новичку, т.е. Вам, просто необходимо научится читать. Ведь ответ на Ваш вопрос, написан в приведенном Вами коде в строках 28-31 - инит одной кнопки
Изначально код был для горизонтального расположения. Это я уже переделал. Ну да ладно-я уже сделал что-то вроде этого:
void initializeButtons() { uint16_t x = 80; uint16_t y = 160; uint16_t w = 150; uint16_t h = 40; uint8_t spacing_y = 20; uint8_t textSize = 1; char buttonlabels[3][20]; strcpy(buttonlabels[0], utf8rus("Выбрать раздел")); strcpy(buttonlabels[1], utf8rus("Продолжить")); strcpy(buttonlabels[2], utf8rus("Выход")); uint16_t buttoncolors[30] = {RED, RED, RED,RED, RED, RED}; for (uint8_t b=0; b<3; b++) { buttons[b].initButton(&tft, // TFT object x, y+b*(h+spacing_y), // x, y, w, h, WHITE, buttoncolors[b], WHITE, // w, h, outline, fill, buttonlabels[b], textSize); // text } char buttonlabels2[6][30]; strcpy(buttonlabels2[3], utf8rus("<<<")); strcpy(buttonlabels2[4], utf8rus("Меню")); strcpy(buttonlabels2[5], utf8rus(">>>")); x = 40; y = 290; w = 60; for (uint8_t b=3; b<6; b++) { uint8_t spacing_x = 20; buttons[b].initButton(&tft, x, y, w, h, WHITE, buttoncolors[b], WHITE, buttonlabels2[b], textSize); x =x+w+spacing_x ; } // Save the y position to avoid draws buttons_y = y;Вопрос теперь такой появился: можно ли сделать изображение кнопкой или создать кнопку с прозрачным фоном, поверх которой вывести изображение? Считывать касание в области, которую занимает картинка?