Canvas绘画设计之网格线背景设置成网格源码

简介: Canvas绘画设计之网格线背景设置成网格源码

效果展示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>网格背景</title>
    <style>
        body {
            line-height: 2em;
        }
 
        #canvas {
            position: absolute;
            top: 0;
            left: 0;
        }
 
        h1 {
            text-align: center;
        }
 
        h2 {
            margin: 0 20%;
        }
 
        p {
            margin: 0 20%;
            text-indent: 2em;
        }
    </style>
</head>
<body>
<h1>欢迎来到CanvasStudy</h1>
<hr/>
<h2>第一节</h2>
<p>欢迎来到我的Canvas教程,在这里你可以学到关于Canvas更加详细的应用,充分了解Canvas的特性,希望得到您的支持。</p>
<p>我的处女作《Canvas系列教程》在我的Github上正在连载更新,希望能得到您的关注和支持,让我有更多的动力进行创作。
    教程介绍、教程目录等能在README里查阅。
    传送门:<a href="https://github.com/827652549/CanvasStudy">https://github.com/827652549/CanvasStudy</a>
</p>
<h2>第二节</h2>
<p>欢迎来到我的Canvas教程,在这里你可以学到关于Canvas更加详细的应用,充分了解Canvas的特性,希望得到您的支持。</p>
<p>我的处女作《Canvas系列教程》在我的Github上正在连载更新,希望能得到您的关注和支持,让我有更多的动力进行创作。
    教程介绍、教程目录等能在README里查阅。
    传送门:<a href="https://github.com/827652549/CanvasStudy">https://github.com/827652549/CanvasStudy</a>
</p>
<canvas id="canvas" height="100%" width="100%">canvas not supported</canvas>
</body>
<script>
    var canvas = document.getElementById('canvas'),
        context = canvas.getContext('2d');
 
    //初始化
    AutoCanvas();
    drawGrid('lightgray', 10, 10);
 
    //窗口伸缩监听
    window.onresize = function () {
        AutoCanvas();
        drawGrid('lightgray', 10, 10);
    };
 
    /**
     * 画网格
     * @param color 网格线颜色
     * @param stepX 格子横向间距
     * @param stepY 格子垂直间距
     */
    function drawGrid(color, stepX, stepY) {
        context.save();
        context.strokeStyle = color;
        context.lineWidth = 0.5;
        for (var i = stepX + 0.5;
             i < context.canvas.width; i += stepX) {
            context.beginPath();
            context.moveTo(i, 0);
            context.lineTo(i, context.canvas.height);
            context.stroke();
        }
 
        for (var i = stepY + 0.5;
             i < context.canvas.height; i += stepY) {
            context.beginPath();
            context.moveTo(0, i);
            context.lineTo(context.canvas.width, i);
            context.stroke();
        }
 
        context.restore();
    }
 
    /**
     * 自动更改画布,当浏览器窗口大小改变当时候调用
     * @constructor
     */
    function AutoCanvas() {
        canvas.height = window.innerHeight;
        canvas.width = window.innerWidth;
    }
</script>
</html>
相关文章
|
JSON 数据可视化 图形学
Graphix: 轻量级、可插拔、OOP 式图形编辑器开发引擎
A lightweight, pluggable, object-oriented programming (OOP) style graphic editor development engine / 一个轻量级、可插拔、OOP 式图形编辑器开发引擎
371 2
|
JavaScript
vue中使用 HotKeys.js 教程(按键响应、快捷键开发)
vue中使用 HotKeys.js 教程(按键响应、快捷键开发)
507 0
|
5月前
|
人工智能 供应链 数据可视化
工作流梳理工具实战教程:手把手教你绘制第一张自动化流程图
本文剖析了团队因流程混乱导致重复劳动和效率低下的问题,提出通过工作流梳理提升协作效率的解决方案。总结了流程梳理的六大核心需求,并深度测评了6款主流工具,国内有板栗看板那,国外有kiss flow结合团队规模与需求提供选型建议,助力企业高效落地流程优化。
|
数据安全/隐私保护 Windows
win11家庭版开机密码忘记了怎么办?
win11家庭版开机密码忘记了怎么办?
492 1
|
网络协议 安全 网络安全
如何识别DDOS攻击模式?
【10月更文挑战第12天】如何识别DDOS攻击模式?
550 18
|
编解码 机器人 C++
ROS2教程07 ROS2自定义消息接口
这篇文章是关于如何在ROS2(Robot Operating System 2)中创建和使用自定义消息类型的教程,包括消息类型的定义、特点、命令行工具的使用,以及如何编写和测试自定义消息类型接口的步骤。
982 0
ROS2教程07 ROS2自定义消息接口
|
SQL 数据挖掘 关系型数据库
性能碾压pandas、polars的数据分析神器来了
性能碾压pandas、polars的数据分析神器来了
854 2
|
前端开发 JavaScript API
开箱即用的axios封装:Vue3+TS(建议收藏)
Axios多用于处理前端项目的Ajax请求,这里要注意区分Axios和Ajax:Ajax是一种技术统称,Axios是第三方库。在使用的时候,我们可以直接使用Axios来发起请求,也可以封装后采用统一的接口发送请求。在前端项目中,应该大多数人都会选择封装一下Axios,不仅可以节省代码,看起来更简洁;而且可以统一管理请求和响应。本文就以Vue3+Typescript,封装一个”开箱即用“的Axios。
12263 6
开箱即用的axios封装:Vue3+TS(建议收藏)
|
XML Web App开发 开发框架
回声嘹亮 之 Go 的 Echo 框架 —— 上手初体验
Echo 是众多 Go Web 框架的一个,根据官网介绍,它有着高性能、可扩展性、极简的特点。
回声嘹亮 之 Go 的 Echo 框架 —— 上手初体验