当前位置:首页 > 娱乐星闻

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

使用画布和自定义右键菜单

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

重绘路径时也有一些bug,使用Firefox时也有不保存图片等bug。

最好用谷歌打开

原代码如下:

& lthtmllang="en " >

& lthead>。& ltmetacharset="UTF-8 " >;& lttitle>。油漆工具

边距:0;

填充:0;

/*不要让鼠标选择文本*/

-web kit-user-select:none;

-moz-user-select:none;

-ms-user-select:none;

用户选择:无;

/*移除滚动条*/

overflow-x:隐藏;

overflow-y:隐藏;

}身体{

背景:黑色;

}画布{

边框:5px solid # ada 9 a 9;

边界半径:8px

位置:绝对;

最高:50%;

左:50%;

transform:translate(-50%,-50%);

背景:rgb(235,235,235);

}.菜单{

位置:绝对;

宽度:150像素;

显示:无;

box-shadow:3px 3px 5px # 88888;

z指数:999;

}.menuul{

宽度:150像素;

}.menuulli{

列表样式类型:无;

宽度:150像素;

高度:36px

背景:# e4e5e6

框尺寸:边框;

border-top:1pxsolid # d0d 0d 0;

行高:36px

左填充:13px

font-size:14px;

光标:指针;

}.menuulli:hover{

背景:# 626262;

border-top:1pxsolid # 626262;

颜色:白色;

}.menuulli:第一个孩子{

背景:线性渐变(90度,黑色,# b1b1 b 1);

border-top:无;

颜色:白色;

}.颜色{

宽度:35px

高度:20px

} & lt/style>。& lt/head>。& ltbody>。& ltdivclass="menu">。& ltul>。& ltli>。画布工具& lt/li>。& ltli>。画笔颜色

& ltselect name = " sel " class = ' select ' & gt。& ltoptionvalue="1 " >1px<。/option>。& ltoptionvalue="5 " >5px<。/option>。& ltoptionvalue="10 " >10px<。/option>。& ltoptionvalue="15 " >15px<。/option>。& lt/select>。& lt/li>。& ltliclass='line'>。这条线

& lt/html>。

& lt>。窗户。= function(){

var vas = document . query selector(' canvas ');

var CTX = vas . GetContext(' 2d ');

var color = document . query selector('。颜色');

var select = document . query selector('。选择');

varline = document.querySelector('。线');

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

var clear = document . query selector('。clear’);

varclearAll = document . query selector('。clearAll ');

varmenu = document.querySelector('。菜单');

varre draw = document . query selector('。REraW ');

varsaveAll = document . query selector('。save all’);

//自定义菜单标志= trueselect . onmousedown = function(){ flagm = false;} select . onmouseout = function(){ flagm = true;} document . oncontext menu = function(e){

vare = e | | window.event//兼容ie menu . 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'}

var startx = 0;

var starty = 0;flag = false

vararrPoint =[];vas . AddEventListener(' mouse down ',函数(e){ flag = true;CTX . BeginPath();CTX . LineWidth = tools . Linewd;CTX . strokestyle = tools . color;startX = e.offsetXstartY = e.offsetYarr point . push(0);//tag}) vas。addeventlistener ('mousemove ',函数(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 });//保存绘图路径} else if(tools . line what = = ' clear '){//橡皮擦ctx.clearRect(X,Y,20,20);} } })vas . addevent listener(' mouse up ',函数(e){ flag = false;

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

//绘制矩形varendX = e.offsetX

varendY = e.offsetYctx.strokeRect(startX,startY,endX - startX,endY-startY);arr point . push(0);//tag}}) vas。addeventlistener ('mouseleave ',function(){ flag = false;arr point . push(0);//tag })REDRAW . onclick = function(){//REDRAW path//console . log(arr point);ctx.clearRect(0,0,vas.width,vas . height);//clear空canvas vartimer = set interval(function(){

var point = ArrPoint . shift();

// shift从标头中删除一个值,并返回删除的值a = arr。shift () arr = [b,c] if (point = = 0) {CTX。begin path();} else { flag = falsectx.lineTo(point.x,point . y);//根据保存的路径绘制CTX . stroke();} if(ArrPoint . length & lt;1) { clearInterval(定时器);} },10)} //下载画布saveAll.onclick = function(){

var src = vas . TotaToul(' image/png ',1);

varcreate_a = document。(' a ');create _ a.href = srccreate_a.download = '只是做IT ';//定义下载文件名create _ a . click();} color . onmousedown = function(){ flagm = false;} color . addevent listener(' mouse leave ',function(){ flagm = true;})color . addevent listener(' change ',function(){ flagm = true;menu . style . display = ' none ';tools . color = this . value;})select . onchange = function(){ tools . LineWd = this . value;flagm = truemenu . style . display = ' none ';} line . onclick = function(){ tools . LineWhat = ' line ';} rect . onclick = function(){ tools . line WhAT = ' rect ';} clear . onclick = function(){ tools . line WhAT = ' clear ';} clearall . onclick = function(){ CTX . clear rect(0,0,vas.width,vas . height);} } & lt/>。

戳“看原文!

1.《在线画板 Canvas在线画图—简单制作一个画板》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《在线画板 Canvas在线画图—简单制作一个画板》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/yule/1477030.html

上一篇

胸大怎么穿着搭配

下一篇

脖子黑怎么美白方法

李晨家世显赫 李晨的背景有多大 李晨家世显赫看看他父辈

  • 李晨家世显赫 李晨的背景有多大 李晨家世显赫看看他父辈
  • 李晨家世显赫 李晨的背景有多大 李晨家世显赫看看他父辈
  • 李晨家世显赫 李晨的背景有多大 李晨家世显赫看看他父辈

李小鹏女儿 李小鹏爱女获封新萌神《爸爸回来了》四爸爸背景全揭秘

在大明星亲子真人秀《爸爸去哪儿》之后,另一档亲子节目《爸爸回来了》接手播出。过去,李的女儿奥利,是跨境娱乐圈一个非常特异的基因操作者,被称为“新萌神”。李的女儿被曝光后,他深爱的妻子也成为网友关注的焦点。虽然只是短暂的...

李馨琪 李小鹏爱女获封新萌神《爸爸回来了》四爸爸背景全揭秘

在大明星亲子真人秀《爸爸去哪儿》之后,另一档亲子节目《爸爸回来了》接手播出。过去,李的女儿奥利,是跨境娱乐圈一个非常特异的基因操作者,被称为“新萌神”。李的女儿被曝光后,他深爱的妻子也成为网友关注的焦点。虽然只是短暂的...

红色满洲里 如果用一种颜色来形容满洲里,你选什么色?

  • 红色满洲里 如果用一种颜色来形容满洲里,你选什么色?
  • 红色满洲里 如果用一种颜色来形容满洲里,你选什么色?
  • 红色满洲里 如果用一种颜色来形容满洲里,你选什么色?
巴基斯坦这起恐怖袭击 巴基斯坦这起针对大使恐怖袭击 背景很不简单!

巴基斯坦这起恐怖袭击 巴基斯坦这起针对大使恐怖袭击 背景很不简单!

巴基斯坦这起爆炸,事情很不简单!因为早不炸晚不炸,偏偏中国大使下榻的时候爆炸。爆炸很惨烈,至少5人死亡、十多人受伤。唯一庆幸的是,当时中国大使正外出归来,距饭店还有几分钟车程。昨天外交部记者会上,汪文斌对恐袭表示强烈谴责,对不幸遇难人员表示哀悼,对伤者致以慰问。他还披露了外界关心的一些讯息,是这样说的:当天中国驻巴基斯坦大使农融正率团访问当地,袭击发生时,中方代表团不在酒店内。截至目前,尚无收到中...

邓伦女朋友是谁 原创 邓伦前女友恋情曝光?男方背景强大是成龙外甥,百万豪车用来搭客

  • 邓伦女朋友是谁 原创 邓伦前女友恋情曝光?男方背景强大是成龙外甥,百万豪车用来搭客
  • 邓伦女朋友是谁 原创 邓伦前女友恋情曝光?男方背景强大是成龙外甥,百万豪车用来搭客
  • 邓伦女朋友是谁 原创 邓伦前女友恋情曝光?男方背景强大是成龙外甥,百万豪车用来搭客
李庄背景 李庄:抗战后方的学术重镇

李庄背景 李庄:抗战后方的学术重镇

1941年同济大学女生合影  20世纪40年代,3000人的弹丸之城迎来了抗战初期的数万文化巨人和学生。宜宾李庄镇以一纸“同大学迁川,迎李庄,一切需要,地方供给”的文告迎来了全国同济大学。中央研究院、中央博物馆、中国建...

tf黑管08是什么颜色

  • tf黑管08是什么颜色
  • tf黑管08是什么颜色
  • tf黑管08是什么颜色