html编写田字格,canvas画田字格与米字格

#div1 {

width: 400px;

height: 400px;

}

转载自canvas画田字格与米字格

你的浏览器不支持canvas!

var oCanvas = document.getElementById('cs');

if (oCanvas.getContext) {

var ctx = oCanvas.getContext('2d'),

l = 0,

w = oCanvas.width,

half = w / 2,

quarter = w / 4,

span = 5; //每条虚线的实线部分长度为5

ctx.strokeStyle = '#000';

ctx.lineWidth = 2;

//ctx.strokeRect(1, 1, w - 2, w - 2);

ctx.moveTo(1, 1);

ctx.lineTo(w-1, 1);

ctx.moveTo(1, w-1);

ctx.lineTo(w-1, w-1);

// ctx.moveTo(1, 1);

// ctx.lineTo(1, w-1);

ctx.moveTo(w-1, 1);

ctx.lineTo(w-1, w-1);

ctx.stroke();

//依次调用看效果!

//drawReal(ctx);

//drawUnReal(ctx);

//drawUnRealNB(ctx);

drawSimpleUnreal(ctx);

}

//画虚线简单做法,有兼容性问题!

function drawSimpleUnreal(ctx) {

ctx.save();

ctx.lineWidth = 1;

ctx.beginPath();

//画布增强功能(注意兼容性,嵌入到ios safari4.3.3有问题!)http://msdn.microsoft.com/zh-cn/library/ie/dn265037(v=vs.85).aspx

//IE11+/safari7+

//ctx.setLineDash([12,3,3,3]); //创建12像素长,间隔为3像素 + 3像素长,间隔为3像素的点划线

ctx.setLineDash([5, 5]); //创建5像素长,间隔为5像素的虚线

//横线

ctx.moveTo(0, half);

ctx.lineTo(w, half);

//竖线

ctx.moveTo(half, 0);

ctx.lineTo(half, w);

//交叉线1

ctx.moveTo(0, 0);

ctx.lineTo(w, w);

//交叉线2

ctx.moveTo(0, w);

ctx.lineTo(w, 0);

ctx.strokeRect(quarter - 1, quarter - 1, half - 2, half - 2);

ctx.stroke();

ctx.closePath();

ctx.restore();

}

### 实现带有田字格底图的电子签名 为了实现在 HTML5 `Canvas` 上添加田字格背景用于电子签名的功能,可以按照以下方法操作: #### 创建田字格图案 首先,在 JavaScript 中创建一个函数来绘制田字格。这个函数将在布上重复绘制线条形成网。 ```javascript function drawGrid(ctx, canvasWidth, canvasHeight) { const gridSize = 20; // 设置每大小为20像素 ctx.strokeStyle = '#ccc'; // 设置线的颜色为灰色 ctx.lineWidth = 1; // 绘制水平线 for (let i = 0; i <= canvasHeight; i += gridSize) { ctx.beginPath(); ctx.moveTo(0, i); ctx.lineTo(canvasWidth, i); ctx.stroke(); } // 绘制垂直线 for (let j = 0; j <= canvasWidth; j += gridSize) { ctx.beginPath(); ctx.moveTo(j, 0); ctx.lineTo(j, canvasHeight); ctx.stroke(); } } ``` 此代码片段定义了一个名为 `drawGrid()` 的函数,该函数接收三个参数:绘图上下文 (`ctx`)、布宽度 (`canvasWidth`) 和高度 (`canvasHeight`). 函数内部通过循环迭代的方式分别沿 X 轴和 Y 轴方向绘制一系列间距相等的直线,从而构成均匀分布的小方[^1]. #### 初始化布并调用绘制函数 接着修改原有的 Vue.js 方法中的初始化逻辑,确保每次加载页面或清除布时都重新渲染一次新的田字格背景: ```javascript methods: { initCanvas() { let canvas = this.$refs.canvasW; let context = canvas.getContext('2d'); // 清除现有内容 context.clearRect(0, 0, canvas.width, canvas.height); // 添加田字格背景 drawGrid(context, canvas.width, canvas.height); // ...其余原有代码... }, clear() { this.initCanvas(); // 当点击“重写”按钮时,先清空再重绘背景 }, save() { /*...*/ } }, mounted(){ this.initCanvas(); // 页面初次加载即显示带背景的空白板 } ``` 上述改动使得每当用户打开应用或是按下“重写”按钮之后都会自动刷新整个区域,并且会再次执行 `drawGrid()` 来重现固定的参考框架[^2]. 这样就完成了一个简单的基于 HTML5 Canvas 技术的手写签名组件,它不仅支持基本的书写功能还提供了辅助性的视觉引导——田字格作为底层模板帮助使用者更精确地控制笔迹位置.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值