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

ChangeCode
原创
发布时间: 2025-06-11 10:09:33 | 阅读数 0收藏数 0评论数 0
封面
本文介绍一款基于HTML开发的8x8点阵屏图像生成工具,通过可视化点击操作快速生成二进制/十六进制代码,并利用html2exe将其打包为独立EXE文件,解决Arduino项目中图案设计效率低的问题。

准备工作:

材料:

材料名称
数量
备注
ZIP
8x8HEX.zip
3.98MB
ZIP
8x8.zip
2.05KB
1

设计界面布局

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

2

HTML 结构与 CSS 样式

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


body {
font-family: Arial, sans-serif;
padding: 20px;
}

.container {
display: flex;
gap: 20px;
}

.grid {
border-collapse: separate;
}

.cell {
width: 40px;
height: 40px;
border: 1px solid #ccc;
cursor: pointer;
background-color: #eee;
transition: background-color 0.1s;
}

.cell.red {
background-color: #ff4444;
}

.display {
display: flex;
flex-direction: column;
gap: 0px;
}

.row-display {
display: flex;
align-items: center;
gap: 15px;
padding: 5px;
}

.copyable {
cursor: pointer;
padding: 9px 5px;
border-radius: 3px;
transition: background-color 0.2s;
}

.copyable:hover {
background-color: #f0f0f0;
}


3

初始化网格状态

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

4

创建交互式网格

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

5

实现状态视觉反馈

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

6

二进制转十六进制逻辑

编写binaryToHex(binary)函数:

  1. 使用parseInt(binary,2)将二进制字符串转十进制;
  2. 通过toString(16).padStart(2,'0')生成两位十六进制数;
  3. 最终结果格式为0xXX(如0xAA),用于显示和复制。


// 二进制转十六进制
function binaryToHex(binary) {
const decimal = parseInt(binary, 2);
return decimal.toString(16).padStart(2, '0').toUpperCase();
}


7

添加代码复制功能

为二进制和十六进制文本块绑定onclick事件,调用copyToClipboard(text)函数:

  1. 使用navigator.clipboard.writeText()实现剪贴板写入;
  2. 成功后弹出提示框,失败时记录错误信息至控制台。


// 复制到剪贴板
async function copyToClipboard(text) {
try {
await navigator.clipboard.writeText(text);
alert('已复制: ' + text);
} catch (err) {
console.error('复制失败:', err);
}
}


8

打包为独立EXE文件

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

9

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)



阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载