canvas+js实现简单的画图工具

JavaScript实现简易画图工具 let inEles = document.querySelectorAll('input'); let canEle = document.querySelector('canvas'); let pen = canEle.getContext("2d"); let spanEle = document.querySelector('span'); let state = false; let yidong; inEles[0].addEventListener('click', function () 阅读详情

在实现画板前,先明确一下要实现的功能:

1.可以改变画笔的颜色

2.可以改变画笔的大小

3.可以改变画笔的形状

4.可以改变画笔的类型(边框绘制或者填充绘制)

5.清空画布

那么先写出对应的html结构

<p class="set">
    <label for="fillColor">填充颜色</label>
    <input type="color" id="fillColor">
    <label for="strokeColor">描边颜色</label>
    <input type="color" id="strokeColor">
    <select id="shape">
        <option value="arc">圆形</option>
        <option value="ric">方形</option>
    <option value="tri">三角形</option>
    </select>
    <label for="radius">半径:</label>
    <input type="number" id="radius" value="10">
    <select id="type" value="fill">
        <option value="fill">填充</option>
        <option value="stroke">描边</option>
    </select>
    <input type="button" value="清空" id="clear">
</p>
<canvas id="canvas"></canvas>

开始编写js代码,首先创建canvas对象,设置canvas的宽高

let canvas = document.getElementById('canvas');
let context = canvas.getContext('2d');
canvas.width = 400;
canvas.height = 400;

然后封装一些方法以实现画笔的绘制

//画笔方法
//圆形
function drawByArc(x, y, radius, type) {
    context.beginPath()
    context.arc(x, y, radius, 0, 2 * Math.PI)
    if (type == 'fill')
        context.fill()
    else
        context.stroke()
    context.closePath()
}
//正方形
function drawByRic(x, y, radius,type) {
    radius *= 2
    context.beginPath()
    context.rect(x, y, radius, radius)
    if (type == 'fill')
        context.fill()
    else
        context.stroke()
    context.closePath()
}
//正三角形
function drawByTriangle(x, y, radius,type) {
    context.beginPath()
    context.moveTo(x, y - radius)
    context.lineTo(x + Math.sin(Math.PI / 3) * radius, y + Math.cos(Math.PI / 3) * radius)
    context.lineTo(x - Math.sin(Math.PI / 3) * radius, y + Math.cos(Math.PI / 3) * radius)
    context.lineTo(x, y - radius)
    if (type == 'fill')
        context.fill()
    else
        context.stroke()
    context.closePath()
}

接着是监听事件,我们要实现按下移动时会有绘制效果,那么可以通过在canvas的onmousedown事件中封装onmousemove事件对应的方法,当触发onmouseup事件时将该事件取消。

canvas.onmousedown = function() {
    this.onmousemove = function(event) {
        let left = event.clientX - this.offsetLeft
        let top = event.clientY - this.offsetTop
        let radius = document.getElementById('radius').value // 设置画笔半径
        let type = document.getElementById('type').value // 设置画笔类型
        context.fillStyle = document.getElementById('fillColor').value // 设置填充颜色
        context.strokeStyle = document.getElementById('strokeColor').value // 设置描边颜色
        switch (document.getElementById('shape').value) {
            case "arc":
                drawByArc(left, top, radius, type);
                break
            case "ric":
                drawByRic(left, top, radius, type);
                break;
            case "tri":
                drawByTriangle(left, top, radius, type);
                break;
        }
    }

    this.onmouseup = function() {
        this.onmousemove = null
    }
}

最后实现清空画布的点击

document.getElementById('clear').onclick = () => {
    context.clearRect(0, 0, 400, 400)
}

这样就实现了简单的画板。

Html5 Canvas+Javascript实现一个简单画图程序(一) 目标: 铅笔工具绘画,绘制常见几何形状(直线,矩形,圆形,多边形)。 实现: 画图的核心是依靠html5 的canvas标签,一个canvas的声明类似下面的形式:    这样就在你的html页面里面写进了一个宽为800像素,高为500像素的canvas。 然后有了canvas还不够,就像它的英文意思一样,它只是供你施展才华的画布。为了能够画图图形,你还需要什么呢?画笔(conte 阅读详情

相关推荐

Canvas实现画图工具

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>task1</title> <link rel="Shortcut Icon" href="index.ico"> <link rel="stylesheet" href="buttons.css" type="text/css"

hys1253731584的博客 3670

JS-Canvas绘图

基本的画布功能 不要在style里面设置width和height(可能会出现位置坐标不准的问题),直接设置canvas的属性就好 <canvas id="drawing" width="300" height="150" style="border:1px solid #d3d3d3;"> </canvas> 要想在画布上绘制图形,首先要获取绘图上下文。使用getContext()方法可以获取绘图上下文的引用。对于平面图形,传入2d即可。 let drawing = docume

qq_45859670的博客 3407

canvas和fabric实现画图功能

/ fabric.Canvas对象负责管理画布上绘制的所有对象,可以将对象添加到fabric.Canvas对象,也可以从fabric.Canvas获取或删除对象。///所有对canvas的修改,包括在其中添加删除对象,以及对象参数的修改,都需要调用渲染方法才能显示出来。///获取画布上的所有对象(rect将是第一个也是唯一一个)///获取之前添加的fabric.Rect(第一个对象)///删除之前添加的对象删除。// getObjects() 获取 canvas 画布的所有对象。

weixin_65969505的博客 988

js系列教程10-canvas绘图全解

var mycanvas = document.getElementById("mycanvas"); if(mycanvas.getContext){ //判断浏览器是否支持 var context = mycanvas.getContext("2d"); //context是画布,getContext获取绘图上下文对象,也有名为WebG

1万+

HTML canvas原生js实现鼠标画图

这是一篇对于当前流行的HTTML5 canvas 鼠标画图的总结

mixue321的博客 1万+

基于HTML+JS的在线画图工具开发

本文还有配套的精品资源,点击获取 简介:在线画图技术允许用户在浏览器中进行图形的绘制、编辑和保存,无需安装额外软件。通过HTML构建页面结构框架和JavaScript实现动态交互,包括图形选择、颜色挑选、绘图操作、保存为图片、撤销/重做、橡皮擦和选区工具以及图层管理等。这些功能结合Canvas API和高级图形库如Fabric.js或Konva.js,以及使用jQuery或...

weixin_26907223的博客 1102

JavaScript 使用Canvas绘图

JavaScript 使用Canvas绘图 <canvas>元素负责在页面中设定一个区域,可以通过JavaScript动态地在这区域中绘制图形。 一、基本用法 1、先设置width和height来指定绘图区域大小,默认是透明的。需用getContext()方法获得绘图上下文。 if(drawing.getcontext){ //检测浏览器是否支持canvas元...

欧唯薇 1万+

在线画板,基于 Canvas 和 JavaScript 的画图工具

在线画板,基于 Canvas 和 JavaScript 的画图工具。 const board = new DrawBoard({}); board.setColor(); board.setLineWidth(); board.clearAll(); board.usePenTool(); board.useLineTool(); board.useCircleTool(); board.useEraser(); board.backspace(); board.download();

canvas标签结合JavaScript画图

canvas元素只是图形的容器,必需使用js脚本来绘制图形,实际上canvas并不能绘图,就相当于一张画布,通过js,获取canvas元素,调用canvas元素的方法,设置平面图形、文字、添加阴影、添加渐变等;结合循环结构,可以绘制高级图形。

绚烂的萤火-博客 1502

数据库1:数据库创建与管理(头歌云课)

在 Windows 系统中,可以直接通过 SQLServer 的应用程序连接数据库,不过很多时候在生产环境下,我们需要通过命令行来连接数据库。两个数据库,数据库名分别为 TestDb 和 MyDb 的数据库,注意先后顺序。为了完成本关任务,你需要掌握:1.如何在 Linux 系统中连接 SQLServer 数据库,2.如何创建数据库。连接的数据库是本地数据库,用户名是 sa ,密码是 '

weixin_60530224的博客 2315

FreeRTOS项目:智能手表(1);

从 “最底层启动”→“系统基础配置”→“硬件驱动”→“中间件能力封装”→“上层业务功能”,分层递进、从基础到应用,就能逐步把整个项目的逻辑串联起来~

weixin_46847454的博客 1447

canvas开发流程图_说好不哭!数据可视化深度干货,前端开发下一个涨薪点在这里~...

随着互联网在各行各业的影响不断深入,数据规模越来越大,各企业也越来越重视数据的价值。作为一家专业的数据智能公司,个推从消息推送服务起家,经过多年的持续耕耘,积累沉淀了海量数据,在数据可视化领域也开展了深入的探索和实践。个推的数据可视化探索和应用由需求出发,从基于开源平台到结合个性化需求进行定制化开发,打造出个推实时消息推送下发图,人群分布热力图等优秀数据可视化作品。这一过程中,个推积累沉淀了大量的...

weixin_30895059的博客 876

API安全攻防实战:从信息搜集到漏洞利用的完整路径

本文详细解析了API安全攻防实战的全过程,从信息搜集到漏洞利用,涵盖了渗透测试的核心技巧和工具使用。通过真实案例展示如何发现和利用API漏洞,如HTTP方法滥用、内容类型转换攻击等,并提供企业级防御策略和测试心得,帮助安全研究人员提升API安全防护能力。

weixin_30394981的博客 435

JS实现简易画图工具

【Canvas】画布 Canvas为HTML5中新加入的标签, JS 可在上面进行绘画,Canvas一个矩形的单元。Canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。 绘制图形的步骤: 1、获取画布节点。 2、获取上下文(即在这个区域进行绘画)getContext。 3、使用 JavaScript 来进行绘制。 ****************************************************************下面用JS实现简易画图工具*******

weixin_49826762的博客 2651

目标检测数据集 第059期-基于yolo标注格式的水果李子检测数据集(含免费分享)

李子作为中国三大水果之一,种植历史超 3000 年,在市场中占据重要地位。传统李子种植、施肥、采摘依赖大量人力,存在资源浪费、产量估算不准、采摘时机难把控等问题。此前,农业领域缺乏针对 “未成熟李子” 的专用数据集,现有水果检测数据集多聚焦于成熟果实(如苹果、柑橘),且未覆盖李子种植的复杂自然场景。在使用该数据集进行学术研究时,应遵守相关的学术规范,引用该数据集的来源,尊重数据集创作者的劳动成果。,用于训练改进型模型,解决李子精准检测的核心痛点。

深度学习算法工程师,专注于前沿算法研究与实战应用。在这里,我将分享深度学习领域的实战经验、优质数据集资源以及最新论文解读与精度分析,旨在与广大技术爱好者共同探索人工智能的奥秘,助力技术成长与创新。 773

OGG故障指南:OGG-01163 Bad column length (xxx) specified for column

OGG-01163 Bad column length (xxx) specified for column AAA in table OWNER.TABLE, maximum allowable length is yyy

qqqyyy0422的博客 718

微信小程序canvas 绘画组件的使用,画图

微信小程序canvas 绘画组件的使用,画图 canvas 绘画组件 文章目录微信小程序canvas 绘画组件的使用,画图闲来没事写个画图的小工具吧,于是就用到了小程序的canvas组件一、先来看下效果吧!二、使用步骤1.引入库2.读入数据总结 闲来没事写个画图的小工具吧,于是就用到了小程序的canvas组件 提示:以下是本篇文章正文内容,下面案例可供参考 一、先来看下效果吧! 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下

heshouwu_1026的博客 2694

58子站安居,经纪人营销管理平台登录接口加密逆向

实战场景password 实战分析 本次要解决的站点依旧来源自78技术人社群,有朋友希望再次说明一下其登录模块的加密参数寻找与逆向逻辑,本文我们就一起分析一下。 站点地址为:vip.anjuke.com/portal/login 通过开发者工具,可以简简单单的寻找到相应的数据。

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 2万+

【前端】 canvas画图

requestAnimationFrame()、canvas

weixin_43872912的博客 1412

C#实现低通和高通滤波算法

低通滤波器允许通过低于某个截止频率的信号成分,并且抑制高于该频率的成分。而高通滤波器则允许通过高于某个截止频率的信号成分,并抑制低于该频率的成分。巴特沃斯滤波器是一种对称的滤波器,具有平坦的幅度响应和最小的群延迟。低通和高通滤波是数字信号处理中常用的滤波技术,用于滤除或增强信号中的特定频率成分。在本篇文章中,我们将使用C#编程语言来实现低通和高通滤波算法。以上就是使用C#实现低通和高通滤波算法的示例代码。你可以根据自己的需求调整截止频率和采样率,将这些代码应用于你的项目中。是滤波器的截止频率,

XisVisual_Basic的博客 1276

最优化方法与数学建模

在本篇博客中,我们将探讨最优化方法在数学建模中的应用。首先,我们将介绍几种常见的最优化方法,如梯度下降、牛顿法和遗传算法。接着,我们将详细阐述这些方法的原理和算法。最后,我们将通过一个数学建模案例,展示如何使用Matlab实现这些方法。本文旨在为大家提供一个清晰的思路,以便更好地理解和应用最优化方法。

YOLO 439

自学web前端练手——HTML5的canvas实现网页画图(html5+css+js)

html5的canvas实现网页画图步骤: ①定义画布(html5)②设置画布样式(CSS)③js准备绘图的上下文环境④js绘图 效果如下: 点击按钮可以改变画笔颜色和画笔粗细大小。随便画的_(:з」∠)_不要嫌弃我手抖 代码如下: .html <!DOCTYPE html> <html lang="en"> <head> <meta charset...

lvshaoshishang的博客 4376

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

基于HTML5 Canvas和jQuery 的画图工具的实现

HTML5 提供了强大的Canvas元素,使用Canvas并结合Javascript 可以实现一些非常强大的功能。本文就介绍一下基于HTML5 Canvas 的画图工具的实现。废话少说,先看成品:

我的程序人生(亦山札记) 2万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

使用canvas实现一个简单的画图工具

Canvas是HTML5中非常重要的一个更新亮点,画布,替代Flash的!制作动画、制作游戏。 现在我们使用canvas的基础知识来制作一个简单的画板. 详细的过程与思路在代码注释中均有说明哦>_<. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">...

lhrdlp的学习笔记 2655

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

canvas简单画图板

canvas简单画图板 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> canvas{ border: 1px so...

HY200043的博客 571

jquery画图html5,基于HTML5 Canvas和jQuery 的画图工具的实现

简介HTML5 提供了强大的Canvas元素,使用Canvas并结合Javascript 可以实现一些非常强大的功能。本文就介绍一下基于HTML5 Canvas 的画图工具的实现。废话少说,先看成品: 该应用是遵循所见即所得(WYSIWYG, What you see is what you get)原则设计的,它具有以下功能:1. 可以绘制自由曲线、直线、矩形框和文字;2. 可以根据需要定义线段...

weixin_32158567的博客 950
上一篇: Vue学习笔记(八)插槽
下一篇: 实现canvas绘制时的撤回功能
前端小黑
博客等级 码龄9年 148粉丝 222原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值