Canvas在线画图—简单制作一个画板

画图工具有很多bug,比如画矩形的时候不显示轨迹

重绘路径时也有些bug,还有使用火狐保存图片时保存不了等等bug

最好用谷歌打开

原码如下:

画图工具

  • CanvasTools
  • 画笔颜色
  • 画笔大小

    1px5px10px15px

  • 线条矩形橡皮擦重绘路径重置画布保存画布

<>window.=function(){

varvas=document.querySelector('canvas');

varctx=vas.getContext('2d');

varcolor=document.querySelector('.color');

varselect=document.querySelector('.select');

varline=document.querySelector('.line');

varrect=document.querySelector('.rect');

varclear=document.querySelector('.clear');

varclearAll=document.querySelector('.clearAll');

varmenu=document.querySelector('.menu');

varreDraw=document.querySelector('.reDraw');

varsaveAll=document.querySelector('.saveAll');

//自定义菜单flagm=true;select.onmousedown=function(){flagm=false;}select.onmouseout=function(){flagm=true;}document.oncontextmenu=function(e){

vare=e||window.event;//兼容iemenu.style.left=e.pageX+'px';menu.style.top=e.pageY+'px';menu.style.display='block';

returnfalse;//阻止当前默认事件发生}

document.onclick=function(){

if(flagm){menu.style.display='none';}}

/*----------------------------*/vartools={color:'black',lineWd:'1',lineWhat:'line'}

varstartX=0;

varstartY=0;flag=false;

vararrPoint=[];vas.addEventListener('mousedown',function(e){flag=true;ctx.beginPath();ctx.lineWidth=tools.lineWd;ctx.strokeStyle=tools.color;startX=e.offsetX;startY=e.offsetY;arrPoint.push(0);//标记})vas.addEventListener('mousemove',function(e){

if(flag){

varX=e.offsetX;

varY=e.offsetY;

if(tools.lineWhat=='line'){

//画线ctx.lineTo(X,Y);ctx.stroke();arrPoint.push({x:X,y:Y});//保存绘图路径}elseif(tools.lineWhat=='clear'){//橡皮擦ctx.clearRect(X,Y,20,20);}}})vas.addEventListener('mouseup',function(e){flag=false;

if(tools.lineWhat=='rect'){

//画矩形varendX=e.offsetX;

varendY=e.offsetY;ctx.strokeRect(startX,startY,endX-startX,endY-startY);arrPoint.push(0);//标记}})vas.addEventListener('mouseleave',function(){flag=false;arrPoint.push(0);//标记})reDraw.onclick=function(){//重绘路径//console.log(arrPoint);ctx.clearRect(0,0,vas.width,vas.height);//清空画布vartimer=setInterval(function(){

varpoint=arrPoint.shift();

//shift从头部删除一个值返回被删除的值a=arr.shift()arr=[b,c]if(point==0){ctx.beginPath();}else{flag=false;ctx.lineTo(point.x,point.y);//按照保存好的路径绘图ctx.stroke();}if(arrPoint.length<1){clearInterval(timer);}},10)}//下载画布saveAll.onclick=function(){

THE END
1.Canva可画在线设计协作平台平面设计作图软件在线设计协作平台Canva可画提供了海量的设计模板,涵盖海报、简历、名片、Logo、PPT、手抄报、二维码、Banner等数十种平面设计场景,更有千款中英文字体及千万张正版图片素材可供使用。精彩设计,随时随地!https://www.canva.cn/
2.Canva可画在线设计协作平台平面设计作图软件在线设计协作平台Canva可画提供了海量的设计模板,涵盖海报、简历、名片、Logo、PPT、手抄报、二维码、Banner等数十种平面设计场景,更有千款中英文字体及千万张正版图片素材可供使用。精彩设计,随时随地!http://www.canva.co/
3.Canva可画在线设计协作平台平面设计作图软件在线设计协作平台Canva可画提供了海量的设计模板,涵盖海报、简历、名片、Logo、PPT、手抄报、二维码、Banner等数十种平面设计场景,更有千款中英文字体及千万张正版图片素材可供使用。精彩设计,随时随地!http://canva.me/
4.前端画canvas得在线网站在线制作Canvas图像的网站有很多,例如: Piximake:https://www.piximake.com/ Canva:https://www.canva.com/ Adobe Spark:https://spark.adobe.com/ Desygner:https://www.desygner.com/cn/ PicMonkey:https://www.picmonkey.com/ 这些网站都提供了丰富的图像制作工具,使您可以轻松地制作各种图像,包括Canvashttps://blog.csdn.net/weixin_35750953/article/details/129524610
5.Canva可画下载最新pc版Canva可画电脑版官方免费下载安装Canva可画评论 1楼 华军网友 2022-05-24 13:35:29 Canva可画界面设计很容易上手,功能很丰富,本人极力推荐! 2楼 华军网友 2022-05-25 12:26:28 Canva可画软件非常好用,下载速度很快,很方便! 3楼 华军网友 2022-05-29 12:06:19 Canva可画超级棒!点一亿个赞!!!https://m.onlinedown.net/soft/10069318.htm
6.浏览器版本过低,请下载客户端浏览器版本过低,请下载客户端 你使用的是旧版或我们不支持的浏览器。要继续使用Canva,请下载桌面客户端 下载Windows 10或更新版本http://www.canva.com/design/DAFdze3Z0F4/GcpBPby8mVovMm787oiqCQ/view
7.使用画布绘制自定义图形(Canvas)Canvas提供画布组件,用于自定义绘制图形,开发者使用CanvasRenderingContext2D对象和OffscreenCanvasRenderingContext2D对象在Canvas组件上进行绘制,绘制对象可以是基础形状、文本、图片等。使用画布组件绘制自定义图形可以由以下三种形式在画布绘制自定义图形:使用CanvasRenderingContext2D对象在Canvas画布上绘制。 @Entry @Componenthttp://docs.openharmony.cn/pages/v5.0/zh-cn/application-dev/ui/arkts-drawing-customization-on-canvas.md
8.Canvas在线画图插件canvas可编辑拖拽画板。Canvas在线画图插件网页特效,js特效Canvas在线画图插件源码,实用的前端网页js插件,jquery特效,jquery插件下载Canvas在线画图插件网页特效,网页小部件js代码就上bootstrap模板库https://www.bootstrapmb.com/tag/zaixianhuatu
9.使用画布绘制自定义图形(Canvas)显示图形onReady(event: () => void)是Canvas组件初始化完成时的事件回调,调用该事件后,可获取Canvas组件的确定宽高,进一步使用CanvasRenderingContext2D对象和OffscreenCanvasRenderingContext2D对象调用相关API进行图形绘制。 Canvas(this.context) .width('100%') .height('100%') .backgroundColor('#F5https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-drawing-customization-on-canvas-0000001453684976-V2
10.网格画法:原生CanvasReact网格:一种可以在canvas面板上绘制图形的辅助线集合。 我们设定canvas初始化左上角顶点为0,0点,向右和向下是XY轴正方向 一、原生Canvas画网格 1、使用Canvas的方法 原生画网格,只需要使用ctx的moveTo、lineTo、strokeStyle 1.moveTo 是Canvas 2D API 将一个新的子路径的起始点移动到 (x,y) 坐标的方法https://juejin.cn/post/7133514836667236365
11.网页HTML5也可以画一画(canvas)腾讯云开发者社区在日常生活中总喜欢涂涂画画写写,这样可以使表达更加直观,记录的也更加详细,而在HTML5中同样可以画一画。canvas意为画布,现实生活中用它来作画,在HTML5中的canvas与之类似,可以称它为“网页中的画布”,有了这个画布便可以轻松的在网页中绘制图形、文字、图片等。 https://www.cloud.tencent.com/developer/article/1614561
12.html5Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点严重提示:canvas的绘图过程(即填充与描边)是非常消耗资源的,如果想节省系统资源提高效率,最好是绘制好所有路径,再一次性填充或描边图形。 由上面的图形我们可以看出,默认的线条粗细是1px,而线条颜色是黑色。当然我们可以设置他们,但奇怪的是设置线条宽度是lineWidth,而设置线条样式的却叫strokeStyle,为什么不是lineStyle呢https://www.jb51.net/html5/70307.html