2

我的浏览器内 LEDDisplay对象LED的属性中存储了对象map。每个LED都有xy属性,以便知道它在画布上的位置,而smap的 2D 数组LED(可以是不同的大小)将它们映射到Display矩阵上。显示对象还具有定义 LED 区域和它们之间的空间的属性。

显示器应该能够显示预制字体中的字符,例如数字和字母。

我无法理解的是:显示字符的最佳方式是什么?例如,以下是字母“S”的外观示例(.LED 显示屏是否已关闭,OLED 显示屏是否已打开:

..OO..
.OOOO.
OO..OO
OO....
.OO...
..OO..
...OO.
OO.OO.
.OOO..
..OO..

我应该如何映射要打开哪些 LED?

我目前的解决方案是:创建一个Character具有属性xy(确定它在显示矩阵上的位置)widthheight(确定它在 LED 中的区域)的对象。然后将应该打开的 LED 映射到 2D 阵列中。当我们需要显示一个字符时,我们得到Character'sxy,找到'source' LED,然后LED按照映射打开 s 。

有没有更好的办法?也许使用路径?

4

2 回答 2

1

据我了解,您正试图拥有一个“像素化”的 LED 显示屏。所以基本上,将你的字符存储为像素数组似乎是定义它们的最佳方式......我真的不明白你的问题是什么。

如果您的问题是关于获取像素图,您可以做的一件事是获取类似字体的像素,在屏幕外画布上绘制字符,获取像素数据,然后使用它们创建角色的像素图。然后你可以做一个循环来映射所有角色,而不必自己创建每个地图......

于 2012-04-25T21:30:51.643 回答
1

根据您的描述,我并不完全确定您是如何做到的,但是根据我认为您所追求的,这是我将如何做到的。

第一步,把你所有的角色放在数组中,定义哪些点需要打开或关闭 LED。如果这将是一个大集合,您可以尝试一些技术来压缩数据。

根据画布上 LED 的大小,我可以创建一个函数来计算哪些 LED 需要更换,并且只擦除需要更换 LED 的显示屏。一次预渲染 LED(开和关状态),就像 openGL 中的显示列表(参见下面的链接)。

否则,如果屏幕上的字符本身非常小并且它们很多,我会预先渲染每个完整的字符并像字体一样使用。这将需要更多地清除屏幕,但如果有数百个 LED,则计算和显示清除的开销可能会很高。

这个页面有一些关于高效画布渲染的好信息:http: //www.html5rocks.com/en/tutorials/canvas/performance/

我假设 LED 是在程序中渲染的,而不仅仅是图像?如果它们只是图像,那么您已经有效地预渲染了 LED。

于 2012-04-25T21:21:36.393 回答