一个汉字笔画库 hanzi-writer 的小应用

背景

最近在教小朋友写字,令人惆怅的是我竟然弄不准有些常见汉字的笔画。百度搜了下,这么多年自己写“毕”的笔画竟然是错的,提笔先写的是竖勾,而正确的第一笔是一横,真有误导下一代的风险啊。

网上能找到有该功能的 APP ,但下载使用过程中看到广告超多,体验很不好。

今天在阮一峰先生每周分享的素材中看到了一个汉字笔画的项目 hanzi-writer,正好可以解决笔画查找的问题,所以玩了下这个项目,顺便写了一个小应用,把它发送到手机桌面上,成了小朋友日常爱玩的识字小游戏了。

项目地址

hanzi-writer 项目地址为:https://chanind.github.io/hanzi-writer/docs.html
看了下文档,使用很简单。

简单示例

依据官网的介绍, js 库还是很好用的,引入一个 js 就可以了。
我写了一个接受文本输入框的输入、并显示对应汉字笔画的 demo ,代码如下:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="Generator" content="EditPlus®">
    <meta name="Author" content="">
    <meta name="Keywords" content="">
    <meta name="Description" content="">
    <title>展示汉字笔画的小页面</title>
    <script src="https://cdn.jsdelivr.net/npm/hanzi-writer@1.3/dist/hanzi-writer.min.js"></script>

    <script type="text/javascript">
        var writer = null;
        function show() {
            var x = document.getElementById("name");
            if(character.length>1){
               character = character.substring(0,1);
			}

			//判断是否是汉字
			var re=/[\u4E00-\u9FA5]/;
			if (!re.test(character)){
				$("#msg").text("请输入一个汉字!");
				return false ;
			}
            //首次渲染,创建汉字
            if(writer == null){
                writer = HanziWriter.create('grid-background-target', x.value, {
                    width: 200,
                    height: 200,
                    padding: 5,
                    showOutline: true
                });
            }else{//非首次,则修改为新的汉字
                writer.setCharacter(x.value);
            }
           
           //动画展示汉字笔画
            writer.animateCharacter();
        }
    </script>
</head>
<body>

<p>文本框内输入一个汉字,并点击“笔画按钮”</p>
<input type="text" id="name"/>
<button id="animate-button" onclick="show();">Animate</button>
<span id="msg" style="color:red;">仅支持一个汉字</span>
<br/>
<br/>
<!--汉字所在的田字格背景图-->
<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200" id="grid-background-target">
    <line x1="0" y1="0" x2="200" y2="0" stroke="#DDD"/>
    <line x1="0" y1="0" x2="0" y2="200" stroke="#DDD"/>
    <line x1="0" y1="200" x2="200" y2="200" stroke="#DDD"/>
    <line x1="200" y1="0" x2="200" y2="200" stroke="#DDD"/>

    <line x1="0" y1="100" x2="200" y2="100" stroke="#DDD"/>
    <line x1="100" y1="0" x2="100" y2="200" stroke="#DDD"/>
    <line x1="0" y1="0" x2="200" y2="200" stroke="#DDD"/>
    <line x1="0" y1="200" x2="200" y2="0" stroke="#DDD"/>
</svg>

</body>
</html>

关键在于 setCharacter 方法,它用于二次渲染时重新渲染汉字区域,如果对已经渲染过的区域再次 create 时会出现汉字叠加的现象。

运行结果

汉字笔画演示地址,点击输入“毕”字,查看笔画结果:
在这里插入图片描述

后记

试了下这个汉字库,的确不错。突然发现有些字写了十几年竟然是错误的笔画,
比如“毕”、“爽”、“匝”。看来汉字笔画学习还是应该从娃娃抓起啊。

<think>好的,我现在需要处理用户关于Hanzi Writer的查询。首先,用户明确提到想寻找与汉字书写相关的工具或资源,并特别询问了Hanzi Writer。根据用户提供的引用内容,我需要整合这些信息,确保回答结构清晰且符合用户的要求。 首先,检查引用内容。引用[1]提到Hanzi Writer汉字书写的工具,强调其作为桥梁的作用;引用[2]说明它是一个免费开源的JavaScript,支持简繁体,有动画和练习功能;引用[3]指出其开源性质,提供笔画数据,适合开发和学习;引用[4]则涉及技术细节,如生成SVG和使用npm安装。需要将这些信息综合起来,分点介绍Hanzi Writer的功能、技术特点、安装方法等。 接下来,用户希望回答结构清晰,帮助解决问题。需要按照逻辑顺序组织内容,比如先介绍工具是什么,然后主要功能,技术分析,安装使用,应用场景,最后相关资源。同时,每个部分需要引用对应的来源,比如功能部分引用[2],技术分析引用[3],安装引用[4]等。 还要注意用户提到的系统级指令,比如数学公式的格式,但这里可能不涉及数学内容,所以重点放在中文回答、生成相关问题、正确引用上。确保在回答末尾添加相关问题,并正确标注引用标识,如[^1]、[^2]等。 可能需要注意用户提到的“引用站内引用”,但用户给出的引用内容似乎都是关于Hanzi Writer的不同方面,需要正确对应到各个引用编号。例如,介绍开源性质时引用[3],技术细节引用[2]和[4]等。 最后,生成的相关问题需要与Hanzi Writer相关,比如与其他工具的比较、教育应用、技术支持等,确保问题有针对性,帮助用户进一步探索。 现在需要将以上思考整理成自然的中文回答,分点明确,引用正确,并附上相关问题。同时,避免使用Markdown格式,按照用户的要求使用口语化中文,但结构清晰。</think>关于汉字书写工具Hanzi Writer的详细介绍如下: ### Hanzi Writer 汉字书写工具解析 1. **核心功能** Hanzi Writer提供动态笔顺演示与书写练习功能,支持简体/繁体汉字。用户可通过手绘模仿学习正确笔画顺序,适用于汉字初学者及书法爱好者。工具包含逐帧动画展示、实时笔画检测和错误提示,确保书写规范。 2. **技术实现** 基于JavaScript开发,采用SVG技术生成可交互的汉字笔顺动画。内置精确的笔画坐标数据,支持通过npm安装集成到Web项目中[^4]。开源特性允许开发者自定义动画速度、颜色等参数[^3]。 3. **安装与使用** ```bash npm install hanzi-writer ``` 代码调用示例: ```javascript const HanziWriter = require('hanzi-writer'); const writer = HanziWriter.create('target-div', '汉', { width: 100, strokeAnimationSpeed: 2 }); writer.animateCharacter(); ``` 4. **应用场景** - 语言学习平台集成汉字教学模块 - 开发汉字书法临摹APP - 教育机构制作汉字课件 5. **资源获取** 官方提供: - 实时演示平台(引用[2]) - GitHub开源(引用[3]) - 详细API文档(引用[4])
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值