首页 > 其他分享 >canvas快速入门(二)直线与折线的绘画

canvas快速入门(二)直线与折线的绘画

时间:2024-07-16 13:58:31浏览次数:12  
标签:canvas 入门 ctx number param points 折线 lineWidth

注释很详细,直接上代码

新增内容:
1. 直线绘制方法
2. 折线绘制方法
3. 画笔颜色调整方法
4. 画笔粗细调整方法

项目结构:

在这里插入图片描述

源码:

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    *{
        margin: 0;
        padding: 0;
    }
</style>
<body>
</body>
<script src="./js/canvas.js"></script>
</html>

canvas.js

/**
 * 创建画布
 * @param {number} width - 宽度
 * @param {number} height - 高度
 * @returns {HTMLCanvasElement} -返回画布
 */
function createCanvas(width,height) {
    const canvas = document.createElement('canvas');
    canvas.width = width;
    canvas.height = height;
    document.body.append(canvas);
    return canvas;
}

/**
 * 绘制直线
 * @param {HTMLCanvasElement} canvas - 画布
 * @param {string} color - 颜色
 * @param {number} x1 - 起点x坐标
 * @param {number} y1 - 起点y坐标
 * @param {number} x2 - 终点x坐标
 * @param {number} y2 - 终点y坐标
 * @param {number} [lineWidth=1] - 线宽
 * @returns {void} - 无返回值
 */
function drawLine(canvas,color,x1,y1,x2,y2,lineWidth=1) {
    const ctx = canvas.getContext('2d');
    ctx.beginPath();
    
    //设置线条宽度
    ctx.lineWidth = lineWidth;

    //设置颜色
    ctx.strokeStyle = color;

    //移动到起点
    ctx.moveTo(x1,y1);
    
    //绘制直线
    ctx.lineTo(x2,y2);

    //绘制
    ctx.stroke();
}

/**
 * 绘制折线
 * @param {HTMLCanvasElement} canvas - 画布
 * @param {string} [color="red"] - 颜色
 * @param {number[]} points - 坐标数组
 * @param {number} [lineWidth=1] - 线宽
 * @returns {void} - 无返回值
 */
function drawPolyline(canvas,color="red",points,lineWidth=1) {
    const ctx = canvas.getContext('2d');
    ctx.beginPath();

    //设置线条宽度
    ctx.lineWidth = lineWidth;
    
    //设置颜色
    ctx.strokeStyle = color;

    //移动到起点
    ctx.moveTo(points[0][0],points[0][1]);
    
    //绘制折线
    for(let i = 1; i < points.length; i++) {
        ctx.lineTo(points[i][0],points[i][1]);
    }

    //绘制
    ctx.stroke();
}


/**
 * 开始
 * @returns {void} - 无返回值
 */
function start() {
    const canvas_1 = createCanvas(400,400);
    drawLine(canvas_1,'red',0,0,100,100,3);
    const canvas_2 = createCanvas(400,400)
    let points=[[100,100],[200,300],[300,200],[400,100]]
    drawPolyline(canvas_2,'blue',points,10);
}


start();

效果演示:

在这里插入图片描述

标签:canvas,入门,ctx,number,param,points,折线,lineWidth
From: https://blog.csdn.net/m0_73756108/article/details/140379398

相关文章

  • Java入门
    Java是什么?java是一门非常火热的计算机语言Java程序初体验下载和安装下载JDK通过官方网站获取:http://www.oracle.com注意:针对不同操作系统,下载对应的安装包1、在浏览器输入网址,点击【Products】-->【Java】2、点击【DownloadJava】进行下载3、本人使用的是17版本,......
  • 新手入门 Git 开发
    Git的三个概念提交:commit仓库repository分支branch注意:downloadzip与指令行:gitclone的区别:gitclone是从仓库里下载下来的,会含有一个.git的文件夹,而downloadzip则没有这样的文件夹一些命令操作指令克隆仓库:gitclone初始化仓库:gitinit添加文件到暂存区:gitad......
  • Apache POI入门学习
    目录说明介绍与使用场景:说明使用场景:使用:一:导入maven坐标:二:POI写入文件基本使用:POI读取文件基本使用:实际使用:代码开发导出效果:说明介绍与使用场景:说明ApachePOI可用于处理MiscrosoftOffice各种文件格式。可以使用POI在Java程序中对MiscrosoftOffice各种......
  • php函数入门学习(数组常见函数2 & 文件基础读写)
    //1、写一个函数,传入数组,返回数组中元素为数字且大于10的新结果数组functiongetNumArr($arr){  if(!$arr)return'请传入数组';  $arr2=array_filter($arr,function($v){    //echogettype($v)."<br>";    returngettype($v)==='inte......
  • 电力需求预测挑战赛——Datawhale AI 夏令营第2期【从零入门AI竞赛之机器学习】
    赛事官网https://challenge.xfyun.cn/h5/detail?type=electricity-demand&ch=dw24_uGS8Gs学习者手册https://exn8g66dnwu.feishu.cn/docx/T7WGd7goqowRvFxwoApclo9Pn0bTask1——传统时序模型(2024/7/14)阶段要求根据文档跑通提交并拿下第一个分数;学习相关知识点,理解赛题。......
  • C# WinForm框架入门与基本控件使用详解
    一.Winform入门​WinForm是WindowsForm的简称,是基于.NETFramework平台的客户端(PC软件)开发技术,一般使用C#编程。在VS2019中,C#WinForm编程需要创建「Windows窗体应用程序」项目。Windows窗体应用程序是C#语言中的一个重要应用,也是C#语言最常见的应用。使用......
  • 入门PHP就来我这(高级)31~ 单文件上传
    有胆量你就来跟着路老师卷起来! --纯干货,技术知识分享路老师给大家分享PHP语言的知识了,旨在想让大家入门PHP,并深入了解PHP语言。上篇文章简单的了解了介绍文件的写操作及目录的操作,本文开始着手实现文件的上传功能及单文件上传案例实现。 1文件上传文件上传可以通......
  • AI作画入门指南:从基础到高级的全面教程
    AI作画入门指南:从基础到高级的全面教程AI作画是一项融合了技术与艺术的创新领域。本指南将带你从基础到高级,逐步掌握AI作画的技巧,打造出独具个性的艺术作品。1.什么是AI作画?定义:AI作画是利用人工智能技术生成艺术作品的过程。常用的工具包括Midjourney、DALL-E和Stable......
  • 转型Web3开发第二课:Dapp开发入门基础 | 01 | 安装MetaMask
    前言完成了《转型Web3开发第一课》之后,得到了不少读者的认可,很多都在问什么时候开始下一课,近期终于抽出了时间开始搞起这第二课。这第二课的主题为「Dapp开发入门基础」,即想要转型做Dapp开发的人员,不管是做前端开发、后端开发、智能合约开发,都需要掌握的基础知识。这......
  • 快速入门:自动驾驶感知工程师的规划与决策核心技巧
    亚马逊云AWS大模型训练自动驾驶技术欢迎来到雲闪世界,亚马逊AWS雲服务器。经典的模块化自动驾驶系统通常由感知、预测、规划和控制组成。直到2023年左右,AI(人工智能)或ML(机器学习)主要在大多数量产自动驾驶系统中增强感知,其影响力在下游组件中逐渐减弱。与规划堆栈中AI的......