Arduino Adafruit NeoMatrix 库
Arduino Adafruit NeoMatrix library
我正在测试 Adafruit_NeoMatrix 库,示例如下:
https://github.com/adafruit/Adafruit_NeoMatrix/blob/master/examples/tiletest/tiletest.pde
我无法弄清楚文本长度和 if 语句的关系:
if(--x < -36) {
更多的文本长度意味着增加数字“36”,但我并没有真正看出其中的关系
-36
定义了基于字体宽度、屏幕宽度和文本长度的最大位移。 Adafruit_GFX 的标准字体是每个字符 6px。您需要此光标值才能正确呈现字体字符。
您需要的变量...
char exampleText[32] = "This is a test";
int pixelPerChar = 6;
int maxDisplacement;
计算开始时的最大位移...
void setup()
{
maxDisplacement = strlen(exampleText) * pixelPerChar + matrix.width();
//...
}
循环函数中...
//...
if (--x < -maxDisplacement)
{
x = matrix.width();
}
//...
如果将 if 语句写成下面的等价方式,会更容易理解:
x--;
if(x < -36) { ... }
x 是光标位置,即字符串的开头。一开始它等于行的长度,这意味着该字符串隐藏在屏幕的右侧。每次迭代,光标向左移动一步,直到它到达坐标 -36。如果字符串短于 36,它将隐藏在屏幕的左侧。然后整个例程用不同的颜色重新初始化。
我正在测试 Adafruit_NeoMatrix 库,示例如下: https://github.com/adafruit/Adafruit_NeoMatrix/blob/master/examples/tiletest/tiletest.pde 我无法弄清楚文本长度和 if 语句的关系:
if(--x < -36) {
更多的文本长度意味着增加数字“36”,但我并没有真正看出其中的关系
-36
定义了基于字体宽度、屏幕宽度和文本长度的最大位移。 Adafruit_GFX 的标准字体是每个字符 6px。您需要此光标值才能正确呈现字体字符。
您需要的变量...
char exampleText[32] = "This is a test";
int pixelPerChar = 6;
int maxDisplacement;
计算开始时的最大位移...
void setup()
{
maxDisplacement = strlen(exampleText) * pixelPerChar + matrix.width();
//...
}
循环函数中...
//...
if (--x < -maxDisplacement)
{
x = matrix.width();
}
//...
如果将 if 语句写成下面的等价方式,会更容易理解:
x--;
if(x < -36) { ... }
x 是光标位置,即字符串的开头。一开始它等于行的长度,这意味着该字符串隐藏在屏幕的右侧。每次迭代,光标向左移动一步,直到它到达坐标 -36。如果字符串短于 36,它将隐藏在屏幕的左侧。然后整个例程用不同的颜色重新初始化。