C++ 我的arduino tft显示屏(adafruit gfx库)上未更新退格删除的文本
对于大学来说,我们需要制作一个由Arduino控制的统一游戏。我的想法是一个黑客游戏,在游戏中,Arduino作为“黑客设备”进行黑客攻击。arduino会有一个屏幕,屏幕上会有一个基本的命令行界面,可以让我输入简单的命令来“破解”,但我在文本和清除文本方面遇到了麻烦 我已经能够使用unity将键入的字符发送到显示器,并使用backspace函数(按backspace将删除字符串中的最后一个字符) 我第一次遇到的问题是在编写时清除所有文本(调用tft.print不会清除以前的任何文本)。我用的是很慢的fillScreen。我发现setTextColor有第二个参数,它允许我将所有特定颜色的文本设置为不同的颜色。将其设置为黑色将基本上清除它 这使得它在写入屏幕时可以立即更新,但我现在有了一个新问题,backspace将不再会 我的理解是,当删除字符时,在调用restart/fillScreen之前,当调用setTextColor并将其保留在屏幕上时,字符的颜色不会更新 我真的不知道如何解决这个问题,所有的谷歌搜索结果几乎没有帮助 以下是我更新文本的代码:C++ 我的arduino tft显示屏(adafruit gfx库)上未更新退格删除的文本,c++,arduino,arduino-uno,adafruit,C++,Arduino,Arduino Uno,Adafruit,对于大学来说,我们需要制作一个由Arduino控制的统一游戏。我的想法是一个黑客游戏,在游戏中,Arduino作为“黑客设备”进行黑客攻击。arduino会有一个屏幕,屏幕上会有一个基本的命令行界面,可以让我输入简单的命令来“破解”,但我在文本和清除文本方面遇到了麻烦 我已经能够使用unity将键入的字符发送到显示器,并使用backspace函数(按backspace将删除字符串中的最后一个字符) 我第一次遇到的问题是在编写时清除所有文本(调用tft.print不会清除以前的任何文本)。我用的是
void updateString(char c){
tft.setTextColor(WHITE,BLACK);
if(c!='<'){
//Add new character to end of string
str.concat(String(c));
}
else if(c=='<' && str.length()>2){
//Remove last character in string
str.remove(str.length()-1);
}
//Set cursor back to 0,0
tft.setCursor(0,0);
//Display text
tft.print(str);
}
void updateString(字符c){
tft.setTextColor(白色、黑色);
如果(c!='可能,请使用与tft.clear()类似的函数
每次刷新屏幕时,或者可以在文本上绘制一个填充的背景正方形,使其看起来像已被擦除,然后重新编写文本。听起来您使用的是按比例间隔的字体,而不是Adafruit_GFX附带的原始经典字体。历史上,使用默认经典字体时可以将文本的背景颜色选项设置为与屏幕背景相同的颜色(通常为黑色)。这将用新数据覆盖旧的屏幕内容并正常工作,因为使用经典字体的字符大小相同。当使用按比例间隔的字体时,字体的背景色选项将被设计禁用
这可能是因为较慢的AVR上的内存需求和速度。无论如何,当使用按比例间隔的字体时,背景颜色功能将不起作用,因为大小不一致的字符与相邻字符重叠在同一区域
有两种解决方法。Adafruit说,为了在使用自定义字体时替换以前绘制的文本,您可以:
尼基·库珀(Nikki Cooper)从我所知道的情况来看,他也做了同样的事情。(写文本很好,退格也有同样的问题)