8x8点阵屏图像生成器:从网页到独立程序的完整实现

准备工作:
材料:
设计界面布局

创建包含8x8网格与代码显示区域的基础HTML结构。左侧为可交互的8x8单元格矩阵,右侧实时展示每行对应的二进制字符串及十六进制值。CSS样式定义了单元格外观(40px×40px)、颜色切换逻辑及代码显示区域的交互样式。
HTML 结构与 CSS 样式

- HTML 结构
<div class="container">
:通过flex
布局让网格(表格)与显示区域并排展示。<table class="grid" id="grid">
:动态生成 8x8 单元格的表格,用于可视化点阵。<div class="display" id="display">
:显示每行对应的二进制和十六进制代码。- CSS 样式
.cell
:定义单元格样式(宽高、边框、背景色、鼠标悬停效果)。.cell.red
:当单元格被激活(值为 1)时,背景色变为红色。.row-display
:每行显示区域的布局,包含二进制和十六进制代码。.copyable
:设置复制文本的样式(光标、内边距、悬停效果)。
初始化网格状态

通过二维数组gridState
存储网格状态(0/1),初始值全设为0。调用initGrid()
函数动态生成表格结构,为每个单元格绑定点击事件,同步更新状态数组。
创建交互式网格

遍历gridState
数组,在HTML表格中插入8×8单元格。每个单元格添加click
事件监听器,触发toggleCell(i,j)
函数切换对应位置的值(0↔1),并调用updateDisplay()
更新界面。
实现状态视觉反馈

updateDisplay()
函数根据gridState
更新单元格背景色:值为1时标记为红色(.red
类),值为0时恢复默认色。该函数同时计算每行二进制字符串(如10101010
)并转换为十六进制(如0xAA
)。
二进制转十六进制逻辑




编写binaryToHex(binary)
函数:
- 使用
parseInt(binary,2)
将二进制字符串转十进制; - 通过
toString(16).padStart(2,'0')
生成两位十六进制数; - 最终结果格式为
0xXX
(如0xAA
),用于显示和复制。
添加代码复制功能




为二进制和十六进制文本块绑定onclick
事件,调用copyToClipboard(text)
函数:
- 使用
navigator.clipboard.writeText()
实现剪贴板写入; - 成功后弹出提示框,失败时记录错误信息至控制台。
打包为独立EXE文件

使用html2exe
工具将HTML文件封装为Windows可执行程序。该工具会自动整合资源文件,生成无需浏览器支持的独立应用程序,便于直接部署至开发环境或分享给其他Arduino开发者。
HTML2EXE 软件功能列表

序号 | 功能说明 |
1 | 实现将Web前端或者网站地址打包转换成Windows32或者64的EXE执行程序。 |
2 | 所有的HTML、javascript、css程序代码以及网址都不会在电脑磁盘中出现。 |
3 | 支持程序图标自定义。录入ico格式图标即可! |
4 | 支持程序标题自定义。 |
5 | 支持设置程序版本以及产品名称。 |
6 | 支持设置程序置顶(始终在其他程序界面的上端)。 |
7 | 支持设置程序原始大小(程序启动后的初始界面大小)。 |
8 | 支持设置程序不可更改界面大小定义(程序始终是一个大小,界面不可以调整大小)。 |
9 | 支持设置程序只运行一个实例(如果程序已经运行,再次启动程序会激活原来已经运行的程序,始终一个实例)。 |
10 | 支持程序启动后默认最大化设置(启动该参数后,程序初始大小参数将无效)。 |
11 | 使用微软最新WebView2(Chromium) 内核。保证兼容性和可靠性。 |
12 | 优化右键上下文菜单,禁用获取代码等菜单。 |
13 | 生成的目标EXE程序支持4K高清显示(H_DPI)及标清显示,程序界面不变形。 |
14 | 提供生成的目标EXE文件是否进行压缩选项,默认是压缩。 |
15 | 支持自定义右键菜单返回功能。 |
16 | 支持自定义图片右键菜单保存功能。 |
17 | 支持程序自动升级功能(有新版本自动升级,无需手动下载)。 |
18 | 支持自定义about界面功能(就是右上角 about 按键显示自定义的内容:版本号、开发者、logo图标等等)。 |
19 | 支持程序启动最大化时是否显示标题栏选项,默认是显示。如果不显示标题栏,则右键提供退出程序菜单 |
20 | 支持右键菜单刷新功能(24.4.14.0) |
21 | 支持选择新页Tab功能(24.4.14.0) |











