Добрый день, возник вопрос про данный дисплейчик, валяется без дела, решил обуздать. TFT LCD дисплей 3.95" на ILI9488 (ID = 0x9488). Более менее разобрался в базовых командах, библиотеки: Код (C++): #include <Adafruit_GFX.h> // Hardware-specific library #include <MCUFRIEND_kbv.h> Но возник вопрос, как обновлять экран частично, а не перезаливать целиком весь экран Код (C++): tft.fillScreen(RED); Т.е. в конкретном месте вывожу какую то информацию: Код (C++): tft.setTextSize(4); tft.setCursor(30, 0); tft.print("23"); и если потом в то же место запишу другую: Код (C++): tft.setTextSize(4); tft.setCursor(30, 0); tft.print("24"); То произойдет наложение, как мне обновить экран только в этом месте, где это необходимо? Каждый раз перезаливать экран или сбрасывать ( tft.reset(); ), это долго и некрасиво. Должен же быть какой-то выход Кто-то сталкивался? Спасибо.
Если вам надо очищать знакоместо, то посмотрите внимательно как работает графическая библиотека. Там есть возможность указать только цвет следующих символов, а также цвет и фон. Вот при указании цвета и фона будут выводиться не только засвеченные пиксели шрифта, а полностью знакоместо с фоновыми пикселями, затирая предыдущее изображение.
Иногда, если выводимая строка меньше уже имеющейся, например выводим "OK" в строку, где раньше был "ERROR", я сначала очищаю всю строку, потом вывожу, моргает меньше. IMHO.
Естественно, если надо очистить строку, то проще сделать это один раз путем рисования прямоугольника цвета фона. Еще для ускорения полезно использовать вывод быстрыми горизонтальными или вертикальными линиями в зависимости от организации видеобуфера в вашем экране.
О, огромное спасибо, я уж думал экранчик бяка и собирался отложить его в сторону, а оказывается все только начинается Быстродействие данного кода для текста меня вполне устраивает, а заливку прямоугольника можно использовать, если нужно быстро затереть какие-то графические элементы. Код (C++): tft.setCursor(50, 50); // Цвет текста и его фон tft.setTextColor(WHITE, BLACK); tft.setTextSize(3); tft.println("Hello World! "); delay(1000); tft.setCursor(50, 50); tft.setTextColor(WHITE, BLACK); tft.setTextSize(3); tft.println("Hello, my freinds!"); delay(1000); Еще раз спасибо! Вы имеете ввиду эти функции ? Код (C++): // Быстро рисуемые линии (x, y, длина), по оси y tft.drawFastVLine(15, 150, 50, BLUE2); // по оси x tft.drawFastHLine(20, 50, 10, MAGENTA); Тем самым заполнить ими какой-то участок?