美文网首页
canvas中图形的组合方式

canvas中图形的组合方式

作者: LinDaiDai_霖呆呆 | 来源:发表于2017-09-21 13:06 被阅读335次

前文

我们在用canvas绘图中,经常会碰到当俩个图形重叠时怎么办的问题,这篇文章介绍的就是一些关于俩个图形重叠时的样式的处理问题

1. 设置组合方式

我们可以通过globalCompositeOperation这个属性,我们可以来更改俩个图形重叠时的样式

如:是想让新图覆盖原始图,还是只保留重叠部分等等.

语法:

ctx.globalCompositeOperation = source-in

先来看看几个属性值:
source-over 默认属性,新图像会覆盖在原有图像
source-in 只保留当前图重叠的部分
source-out 绘制不重叠部分
source-atop 新图像仅仅显示与老图像重叠区域,老图像仍然可以显示
destination-over 原图覆盖新图
destination-in 绘制原图和新图重叠部分
destination-out 绘制原图和新图不重叠部分
destination-atop 绘制原图和新图重叠部分以及新图
lighten 绘制新图和原图,重叠部分加色处理
darken 保留重叠部分最黑的像素
lighter 保证重叠部分最量的像素
copy 绘制新图,覆盖原图
xor 重叠部分会变成透明

1.2 几种组合方式案例

例1:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        #canvas1{
            border:1px solid red;
        }
    </style>
</head>
<body>
<canvas id="canvas1" width="500" height="500"></canvas>
</body>
<script type="text/javascript">
    var canvas = document.getElementById("canvas1");
    var ctx = canvas.getContext("2d");

    ctx.fillStyle = "red";
    ctx.beginPath();
    ctx.arc(150, 150, 100, 0, Math.PI*2, true);
    ctx.closePath();
    ctx.fill();

    ctx.fillStyle = "green";
    ctx.beginPath();
    ctx.arc(250,150, 100, 0, Math.PI*2, true);
    ctx.closePath();
    ctx.fill();

</script>
</html>

上面的例子中,我没有对图片的重叠部分做任何的处理,效果就是和source-over一样,新图会覆盖原图:

default.png

在代码中加入globalCompositeOperation属性的时候,会呈现不同的效果

1.source-over(default)
新图像会覆盖在原有图像。(默认)


default.png

2.source-in
只保留当前图重叠的部分其他区域都变成透明的。(包括其他的老图像区域也会透明)
ctx.globalCompositeOperation = "source-in"

source-in.png

3.source-out
绘制不重叠部分
ctx.globalCompositeOperation = "source-out"

source-out.png

4.source-atop
新图像仅仅显示与老图像重叠区域。老图像仍然可以显示。

source-atop.png

5.destination-over
原图覆盖新图
ctx.globalCompositeOperation = "destination-over"

destination-over.png

6.destination-in
绘制原图和新图重叠部分
ctx.globalCompositeOperation = "destination-in"

destination-in.png

7.destination-out
绘制原图和新图不重叠部分
ctx.globalCompositeOperation = "destination-out"

destination-out.png

8.destination-atop
绘制原图和新图重叠部分以及新图
ctx.globalCompositeOperation = "destination-atop"

destination-atop.png

9.lighten
绘制新图和原图,重叠部分加色处理
ctx.globalCompositeOperation = "lighter"

lighter.png

10.darken
保留重叠部分最黑的像素。(每个颜色位进行比较,得到最小的)
blue: #0000ff
red: #ff0000
所以重叠部分的颜色:#000000
ctx.globalCompositeOperation = "darken"

darken.png

11.lighter
保证重叠部分最量的像素。(每个颜色位进行比较,得到最大的)
blue: #0000ff
red: #ff0000
所以重叠部分的颜色:#ff00ff
ctx.globalCompositeOperation = "lighter"

lighter.png

12.copy
只有新图像会被保留,其余的全部被清除(变透明)
ctx.globalCompositeOperation = "copy"

copy.png

13.xor
重叠部分会变成透明
ctx.globalCompositeOperation = "xor"

xor.png

相关文章

  • canvas中图形的组合方式

    前文 我们在用canvas绘图中,经常会碰到当俩个图形重叠时怎么办的问题,这篇文章介绍的就是一些关于俩个图形重叠时...

  • canvas 图形的组合方式

    一、所有组合方式概览 globalCompositeOperation 的所有属性值 我们先解释一下目标图和原图你...

  • 带你了解Compose图形之Compose Canvas

    Compose Canvas 首先来了解一下Canvas: ⾃定义图形的核⼼可组合项是Canvas。 在布局中放置...

  • canvas(直线)

    canvas绘制基本图形,包括直线,矩形,圆等,复杂的图形都是由简单的图形组合而成。 1.直线 (1)实现效果 (...

  • 基于H5canvas刮刮乐界面

    效果 老规矩线上效果图, 如下图 原理 主要基于canvas的图形组合 context.globalComposi...

  • canvas 进阶

    之前我们写的都是canvas基础类型的练习,从今天开始,就要进入更深一级的学习当中了 一、图形的组合方式 下面我们...

  • 14-JS canvas 学习

    Canvas简介 canvas作用: canvas元素可以让用户在网页上绘制图形; canvas介绍 HTML5中...

  • AndroidUI常用类以及界面相关类

    1.android.graphic.Canvas Canvas类好比手机中的画纸,可以在Canvas上画图形或者图...

  • 《JS原理、方法与实践》- canvas作图(二)- 组合、剪切

    组合与剪切 组合与剪切主要是对应多个图形来说的,组合指的是多个图形重叠时的组合方式,剪切是指使用路径来指定绘图的区...

  • HTML5Canvas

    Canvas绘制简单图形 Canvas简单使用 canvas元素本省并不能实现图形绘制功能,绘制图形的工作需要有J...

网友评论

      本文标题:canvas中图形的组合方式

      本文链接:https://www.haomeiwen.com/subject/scyzsxtx.html