javascript - 使用 <canvas> 制作浏览器内 LED 显示屏 : how do I go about creating characters?

标签 javascript html canvas fonts led

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

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

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

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

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

我当前的解决方案是:创建一个具有属性xy(决定它在显示矩阵上的位置)的Character对象以及宽度高度(决定了LED的面积)。然后将应该打开的 LED 映射到 2D 阵列中。当我们需要显示一个字符时,我们获取Characterxy,找到“source”LED,然后切换LED 按映射亮起。

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

最佳答案

根据您的描述,我不能完全确定您是如何做到这一点的,但根据我认为您所追求的目标,我将按照以下方式进行操作。

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

根据 Canvas 上 LED 的大小,我可以创建一个函数来计算哪些 LED 需要更改,并且仅删除需要更改的 LED 的显示屏。预渲染一次 LED(打开和关闭状态),就像 openGL 中的显示列表(请参阅下面的链接)。

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

此页面提供了一些有关高效 Canvas 渲染的有用信息: http://www.html5rocks.com/en/tutorials/canvas/performance/

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

关于javascript - 使用 <canvas> 制作浏览器内 LED 显示屏 : how do I go about creating characters?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10313530/

相关文章:

javascript - 如何在 WordPress 中使用可折叠 div 标签

javascript - HTML5 Canvas 与 requestAnimationFrame 撕裂

javascript - Canvas :drawImage 未将图像绘制到 Canvas 上

jquery - 打开和关闭容器 (div)

javascript - 在 JS 代码中添加弹出框的 html 内容的好习惯是什么?

javascript - 如何从 500 个可能的问题中选出 30 个问题

javascript - 帮助这个动画循环

javascript - fillRect 之后 Canvas 不会重置

android - 如何将 AdMob 绘制到 Canvas 上?

javascript - 如何通过带有onclick事件的开关设置button.value