首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从一个画板demo学习canvas

主要是在于touch事件上的实践经验 retina屏兼容 retina屏会使用多个物理像素渲染一个独立像素,导致一倍图在retina屏幕上模糊,canvas也是这样,所以我们应该把canvas画布的大小设为...(touch.clientX, touch.clientY) } 画布状态的储存和恢复 进行绘图操作时,我们会频繁设置canvas绘图环境的属性(线宽,颜色等),大多数情况下我们只是临时设置,比如画蓝色的线段...,又要画一个红色的正方形,为了不影响两个绘图操作,我们需要在每次绘制时,先保存环境属性(save),绘图完毕后恢复(restore) ctx.save() ctx.fillStyle = "#333"...ctx.strokeStyle = "#666" ctx.restore() 绘制表面的储存与恢复 主要用于临时性的绘图操作,比如用手指拖出一个方形时,首先要在touchstart事件里储存拖动开始时的绘制表面...(getImageData),touchmove的事件函数中,首先要先恢复touch开始时的绘图表面(putImageData),再根据当前的坐标值画出一个方形,继续拖动时,刚才画出的方形会被事件函数的恢复绘图表面覆盖掉

65220

canvas的api总结

设置或返回用于阴影的模糊级别 shadowOffsetX 设置或返回阴影与形状的水平距离 shadowOffsetY 设置或返回阴影与形状的垂直距离 lineCap 设置或返回线条的结束点样式...font 设置或返回文本内容的当前字体属性(和css的font一样) textAlign 设置或返回文本内容的当前对齐方式 textBaseline 设置或返回在绘制文本时使用的当前文本基线...fillText( text, x, y ) 在画布上绘制“被填充”的文本 strokeText( text, x, y ) 在画布上绘制文本(无填充) measureText( text...) 把图像数据放回画布上。...scale( x, y ) 缩放当前绘图 translate( x, y ) 重新设置画布上的(0,0)位置 rotate( angle ) 选择当前绘图,单位为“弧度”,角度转弧度公式( degrees

1.6K11
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    手把手教你利用JS给图片打马赛克

    效果演示 Canvas 简介 HTML5 标签用于绘制图像(通过脚本,通常是 JavaScript) 不过, 元素本身并没有绘制能力(它仅仅是图形的容器) - 您必须使用脚本来完成实际的绘图任务 get...Canvas 简介 这个 HTML 元素是为了客户端矢量图形而设计的。它自己没有行为,但却把一个绘图 API 展现给客户端 JavaScript 以使脚本能够把想绘制的东西都绘制到一块画布上。...,该对象提供了用于在画布上绘图的方法和属性 本手册提供完整的 getContext("2d") 对象属性和方法,可用于在画布上绘制文本、线条、矩形、圆形等等 标记和 SVG 以及 VML 之间的差异:...标记和 SVG 以及 VML 之间的一个重要的不同是, 有一个基于 JavaScript 的绘图 API,而 SVG 和 VML 使用一个 XML 文档来描述绘图。...(x,y,width,height); 复制代码 ---- ctx.putImageData() putImageData() 方法将图像数据(从指定的 ImageData 对象)放回画布上。

    1.5K20

    探究 canvas 绘图中撤销(undo)功能的实现方式

    x, y); ctx.drawImage(watermarkImg, x, y); 直接连续使用 drawImage() 把对应的图片绘制到 canvas 画布上就行。...在执行 undo 操作时,从栈中取出最新保存的快照,然后重新绘制画布,即可实现撤销操作。实际测试也符合预期。 性能优化 上一节中我们很粗犷地实现了 canvas 的撤销功能。为什么说粗犷呢?...此外,在绘制图片过于复杂时,getImageData 和 putImageData 这两个方法会产生比较严重的性能问题。...之前说过,我们通过对整个画布保存快照的方式来记录每个操作,换个角度思考,如果我们把每次绘制的动作保存到一个数组中,在每次执行撤销操作时,首先清空画布,然后重绘这个绘图动作数组,也可以实现撤销操作的功能。...可行性方面,首先这样可以减少保存到内存的数据量,其次还避免了使用渲染开销较高的 putImageData。

    2.1K50

    HTML5(六)——Canvas 高级操作

    translate() 重新映射画布上的 (0,0) 位置。 transform() 替换绘图的当前转换矩阵。 setTransform() 将当前转换重置为单位矩阵。...二、canvas 操作图片 drawImage() 在画布上绘制图像、画布或视频。也能够绘制图片的一部分,增加或减少图像的尺寸。...y 在画布上放置图像的 y 坐标位置。 width 可选。要使用的图像的宽度。(伸展或缩小图像) height 可选。要使用的图像的高度。...水平值(y),以像素计,在画布上放置图像的位置。 dirtyWidth 可选。在画布上绘制图像所使用的宽度。 dirtyHeight 可选。在画布上绘制图像所使用的高度。...通过 getImageData 复制的指定矩形像素数据,编辑之后,通过 putImageData 方法将图像数据放回画布上。

    1.2K30

    HTML5(六)——Canvas 高级操作

    translate() 重新映射画布上的 (0,0) 位置。 transform() 替换绘图的当前转换矩阵。 setTransform() 将当前转换重置为单位矩阵。...二、canvas 操作图片 drawImage() 在画布上绘制图像、画布或视频。也能够绘制图片的一部分,增加或减少图像的尺寸。...y 在画布上放置图像的 y 坐标位置。 width 可选。要使用的图像的宽度。(伸展或缩小图像) height 可选。要使用的图像的高度。...水平值(y),以像素计,在画布上放置图像的位置。 dirtyWidth 可选。在画布上绘制图像所使用的宽度。 dirtyHeight 可选。在画布上绘制图像所使用的高度。...通过 getImageData 复制的指定矩形像素数据,编辑之后,通过 putImageData 方法将图像数据放回画布上。

    1.3K30

    H5学习之路之初识canvas,了解下?

    strokeStyle 设置或返回用于笔触的颜色、渐变或模式。 shadowColor 设置或返回用于阴影的颜色。 shadowBlur 设置或返回用于阴影的模糊级别。...转换 方法 描述 scale() 缩放当前绘图至更大或更小。 rotate() 旋转当前绘图。 translate() 重新映射画布上的 (0,0) 位置。...textBaseline 设置或返回在绘制文本时使用的当前文本基线。 方法 描述 fillText() 在画布上绘制"被填充的"文本。 strokeText() 在画布上绘制文本(无填充)。...getImageData() 返回 ImageData 对象,该对象为画布上指定的矩形复制像素数据。 putImageData() 把图像数据(从指定的 ImageData 对象)放回画布上。...createEvent() 创建新的 Event 对象 getContext() 获得用于在画布上绘图的对象 toDataURL() 导出在 canvas 元素上绘制的图像

    1.1K20

    神奇canvas 带你实现魔法摄像头

    背景 我们用手机的摄像头自拍,很容易实现 简单的自拍效果,如复古、黑白等等。其实我们使用web端的JavaScript也是可以实现的。接下来就带领小伙伴实现一个魔法摄像头。并且提供了截图下载功能。...实现方式:使用getImageData获取图像数据,然后遍历每个像素,调整每个像素的亮度值,再使用putImageData将修改后的数据绘制回Canvas。...实现方式:使用getImageData获取图像数据,然后遍历每个像素,增加或减少每个像素的红色、绿色、蓝色分量的值,再使用putImageData将修改后的数据绘制回Canvas。...实现方式:使用getImageData获取图像数据,然后遍历每个像素,调整每个像素的透明度值,再使用putImageData将修改后的数据绘制回Canvas。...就是先用canvas将画面画小,然后再将画面缩放来实现一个模糊效果,间接实现马赛克效果 渐变滤镜效果: 原理:通过在图像上应用渐变效果,使图像呈现渐变色的效果。

    6000

    【基础系列】Canvas专题

    = url; 2 二维绘图上下文         当使用一个canvas元素的getContext(“2d”)方法时,返回的是CanvasRenderingContext2D对象,其内部表现为笛卡尔平面坐标...对于那些宽度为偶数的线条,每一边的像素数都是整数,那么你想要其路径是落在像素点之间(如那从(3,1) 到 (3,5)) 而不是在像素点的中间。如果不是的话,端点上同样会出现半渲染的像素点。..., dirtyHeight ])     方法概述:         在绘图画布上绘制给定的ImageData对象。...        在本文描述的画布中绘图,浏览器一般按照下面的顺序进行绘制:     1.准备形状或图片,此时图片假设为A,形状必须被所有属性描述的形状,且经过坐标转换;     2.当绘制阴影时,准备图片...A,并绘制阴影,形成图片B;     3.当绘制阴影时,为B的每个像素乘上alpha值;     4.当绘制阴影时,则根据组合参数对B和本画布剪贴区域内的图片进行组合;     5.在图片A上每个像素乘上

    38531

    【Web技术】774- 基于canvas完成图片裁剪工具

    因为canvas代码还是比较长的,尽量写思路,完整代码已放在github上。 canvas模糊问题 这个是写canvas必定接触的问题,网上关于这个的答案也到处都是,就不详细介绍了。...(canvas.width/height表示画布实际大小,而canvas.style.width/height表示在浏览器上渲染结果大小) 最后再通过context.scale(ratio, ratio...(globalCompositeOperation表示如何将一个源(新的)图像绘制到目标(已有)的图像上。)...这个时候,canvas是旋转了,但是image重新绘画的时候,也要绘画旋转后的图,那么就利用上方讲的方法去旋转绘画。 还有就是别忘记通过save & restore去保存和恢复绘图状态。...然后再将这个处理后的像素数据,重新通过putImageData放回到canvas上。 像素数据,对于每个像素都有四个方面的信息,分别是Red,Green,Blue,Alpha。

    1.3K20

    Canvas如何实现滤镜效果

    对于管理系统以及类似的应用来说,某个功能的本质可以理解为某一业务点。而对于专业工具以及相关的应用来说,某个功能实际上就是某个技术点。--《功能》 图片滤镜 滤镜,主要是用来实现图像的各种特殊效果。...这些坐标点被设定为画布坐标空间元素。 Canvas实现拾色器 前端在实现设计稿时,通常会使用拾色器,也叫做吸色工具。基于canvas下面的代码是一种简单的实现。...,该位置就是此时鼠标所在的像素点的位置 点击鼠标时,获取该像素点的颜色信息。...在场景中写入像素数据 我们可以使用putImageData()方法修改像素数据后,对画布场景数据进行重置。...然后将被修改的像素数组通过putImageData()放回到画布中去。invert函数仅仅是去减掉颜色的最大色值255.grayscale函数仅仅是用红绿和蓝的平均值。

    1.2K20

    canvas学习和滤镜实现

    这个 HTML 元素是为了客户端矢量图形而设计的。它自己没有行为,但却把一个绘图 API 展现给客户端 JavaScript 以使脚本能够把想绘制的东西都绘制到一块画布上。...canvas标签和 SVG 以及 VML 之间的一个重要的不同是,canvas标签 有一个基于 JavaScript 的绘图 API,而 SVG 和 VML 使用一个 XML 文档来描述绘图。...canvas 绘图学习 大多数 Canvas 绘图 API 都没有定义在 canvas标签本身上,而是定义在通过画布的getContext()方法获得的一个“绘图环境”对象上。...canvas元素 var c = document.querySelector("#my-canvas"); c.width = 150; c.height = 70; // 获取 指定canvas标签 上的...和参数说明请看:canvas 图像处理 API 参数讲解 绘制图像 在此些 API 的基础上,我们就可以在canvas元素中绘制我们的图片。

    67430

    canvas 像素操作

    ; // 获取整个 canvas 画布上的像素信息 var imageData = context.getImageData(0,0,canvas.width,canvas.height); console.log...(imageData); 需要注意的是,如果是使用 image 对象动态生成 img 图片,然后使用 drawImage 和 getImageData 方法时,chrome 后可能会报图片跨域错误。...putImageData() 方法 该方法可以将 imageData 对象绘制到 canvas 上。...该方法的参数:ctx.putImageData(imagedata, dx, dy); dx:源图像数据在目标画布中的 x 轴方向的偏移量; dy:源图像数据在目标画布中的 y 轴方向的偏移量; 除这两个参数之外还有四个可选属性...当然,也可以使用 change 事件,当鼠标放开时才触发事件。CSS3 中的 filter 属性是很强大的,不足的就是浏览器兼容性现在还不太好。

    1.9K10

    HTML5 Canvas API详解

    新的 HTML5 canvas 是一个原生 HTML 绘图簿,用于 JavaScript 代码,不使用第三方工具。...与拥有各种画笔的艺术家不同,您使用不同的方法在 canvas 上作画。您甚至可以在 canvas 上创建并操作动画,这不是使用画笔和油彩所能够实现的。...Canvas API(画布)用于在网页实时生成图像,并且可以操作图像内容,基本上它是一个可以用JavaScript操作的位图(bitmap)。 使用前,首先需要新建一个canvas网页元素。...,做法是读取图片后,使用drawImage方法在画布内进行重绘。...这个数组不仅可读,而且可写,//因此通过操作这个数组的值,就可以达到操作图像的目的。修改这个数组以后,使用putImageData方法将数组内容重新绘//制在Canvas上。

    2K20

    鸿蒙元服务实战-笑笑五子棋(2)

    鸿蒙元服务实战-笑笑五子棋(2) 章节导读 本章节主要讲解如何创建元服务和使用 canvas 描绘图形 目标 上一章最后讲到了 笑笑五子棋 主要的技术栈如下: ArkTS API 12 Canvas 元服务独有的...渲染画布组件 在画布上描绘图案 @Entry @Component struct Index { // 1 用来配置CanvasRenderingContext2D对象的参数,包括是否开启抗锯齿,...,直线、圆圈、矩形等图形描绘到画布上。...如果想要呈现出比较酷炫的效果,做法是: 描绘图形 擦除画布 计算数值-重新描绘图形 擦除画布 。。。...shadowBlur 设置绘制阴影时的模糊级别,有默认值及取值限制。 shadowColor 设置绘制阴影时的阴影颜色,有默认值。

    5810

    熬夜总结了 “HTML5画布” 的知识点(共10条)

    使用JavaScript实现绘图的流程 在开始绘图时,先要获取Canvas元素的对象,在获取一个绘图的上下文。...使用drawImage()方法可以将图像添加到Canvas画布中,绘制一幅图像,需要有三个重载的方法: 使用: drawImage(image, x, y) // 在画布上定位图像 // 方法在画布上绘制图像...destY 在画布上放置图像的 y 坐标位置 destWidth 要使用的图像的宽度 destHeight 要使用的图像的高度 插入图像: ?...图形组合 属性 globalCompositeOperation 设置如何在画布上组合颜色 12中组合类型: 值 说明 copy 只绘制新图形,删除其他所有内容 darker 在图形重叠的地方,颜色由两个颜色值相减后决定...scale() 缩放当前绘图变大或变小 rotate() 旋转当前绘图 translate() 重新映射画布的(0,0)位置 6.使用图像 使用三种方法插入图像 function draw() {

    7.1K21

    熬夜总结了 “HTML5画布” 的知识点(共10条)

    使用JavaScript实现绘图的流程 在开始绘图时,先要获取Canvas元素的对象,在获取一个绘图的上下文。...drawImage()方法可以将图像添加到Canvas画布中,绘制一幅图像,需要有三个重载的方法: 使用: drawImage(image, x, y) // 在画布上定位图像 // 方法在画布上绘制图像...使用方法:beginPath()和closePath(),分别表示开始一个新的路径和关闭当前的路径 使用beginPath()方法创建一个新的路径 moveTo(x,y),开始绘图时的坐标 lineTo...图形组合 属性 globalCompositeOperation 设置如何在画布上组合颜色 12中组合类型: 值 说明 copy 只绘制新图形,删除其他所有内容 darker 在图形重叠的地方,颜色由两个颜色值相减后决定...scale() 缩放当前绘图变大或变小 rotate() 旋转当前绘图 translate() 重新映射画布的(0,0)位置 6.使用图像 使用三种方法插入图像 function draw() {

    7.6K10
    领券