Canvas的擦除操作(八)

Canvas的擦除主要用于你画错了,可以重新擦掉,或者清除。

 

擦除函数

context.clearRect(x,y,width,height)
参数x,y表示擦除的远点坐标,
width表示擦除矩形的宽,
height则表示高

现在画个圆,然后把圆的下半部分擦掉,代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>html5</title>

    <script type="text/javascript" src="jquery-3.1.1.min.js"></script>
    <script type="text/javascript" >$(document).ready(function(){
        var  canvas = $("#myCanvas");
        var  context = canvas.get(0).getContext("2d");

        context.fillStyle = "#12ad31";
        context.beginPath();
        context.arc(200,200,100,0,Math.PI*2,true);
        context.closePath();
        context.fill();   <!-- 绘制一个圆-->

        context.clearRect(100,200,200,100);<!-- 计算得出需擦除的矩形原点为(100,200),宽200,高100-->


    })</script>
</head>
<body>

    <canvas id="myCanvas" width="500" height="500" style="background-color: #112233">
        <!-- no no no no -->
    </canvas>

</body>
</html>

效果图:

这里提醒一下,如果想清除整个Canves,但有不知道Canves的尺寸,可以用下面的方法,即参数width、height传入Canves的尺寸,尺寸函数为canves.width();与canves.height();

即代码:

 context.clearRect(0,0,canvas.width(),canvas.height());

自己可以试试,结果是什么都没有了!

重置函数

上面的擦除函数只是擦除区域内的东西,对Canves其他部分没有任何影响,包括样式;而重置函数是将canves完全重置,把偶哦样式等,恢复到原始状态;

        canvas.attr("width",canvas.width());
        canvas.attr("height",canvas.height());
        这2个其实重置canvas宽和高的操作,所以所有东西都会重置!

下面给个测试代码,

先画个圆,然后擦除函数或重置函数,再画个矩形。

1、代码如下:


        context.fillStyle = "#12ad31";
        context.beginPath();
        context.arc(200,200,100,0,Math.PI*2,true);
        context.closePath();
        context.fill();   <!-- 绘制一个圆-->

        context.clearRect( 0, 0, canvas.width(), canvas.height());

        context.fillRect(100,100,100,200);

 

使用context.clearRect函数,我们发现 矩形的颜色与圆的颜色一样;

 

2、代码如下:

        context.fillStyle = "#12ad31";
        context.beginPath();
        context.arc(200,200,100,0,Math.PI*2,true);
        context.closePath();
        context.fill();   <!-- 绘制一个圆-->

        canvas.attr("width",canvas.width());
        canvas.attr("height",canvas.height());

        context.fillRect(100,100,100,200);

 

使用context.attr函数,我们发现 矩形的颜色是默认颜色;说明样式都被重置了!

 

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现 Canvas 图像擦除笔和图像修补笔的功能,你可以使用以下方法: 1. 图像擦除笔: - 设置 `globalCompositeOperation` 属性为 `"destination-out"`,这将使绘制的内容被擦除掉。 - 在鼠标或触摸事件的处理程序中,使用擦除笔的形状和样式进行绘制,以将图像部分擦除。 2. 图像修补笔: - 设置 `globalCompositeOperation` 属性为 `"source-over"`,这将允许正常绘制。 - 在鼠标或触摸事件的处理程序中,使用修补笔的形状和样式进行绘制,覆盖之前擦除的部分,实现图像的修补。 下面是一个简单的示例代码,演示了如何实现图像擦除笔和图像修补笔的功能: ```html <canvas id="myCanvas" width="400" height="400"></canvas> <button onclick="setEraser()">擦除笔</button> <button onclick="setBrush()">修补笔</button> <script> const canvas = document.getElementById("myCanvas"); const context = canvas.getContext("2d"); let isDrawing = false; let isErasing = false; let brushSize = 10; let brushColor = "black"; canvas.addEventListener("mousedown", startDrawing); canvas.addEventListener("mousemove", draw); canvas.addEventListener("mouseup", stopDrawing); canvas.addEventListener("mouseout", stopDrawing); function startDrawing(e) { isDrawing = true; context.beginPath(); context.moveTo(e.clientX - canvas.offsetLeft, e.clientY - canvas.offsetTop); } function draw(e) { if (!isDrawing) return; const x = e.clientX - canvas.offsetLeft; const y = e.clientY - canvas.offsetTop; if (isErasing) { context.globalCompositeOperation = "destination-out"; context.arc(x, y, brushSize / 2, 0, 2 * Math.PI); context.fill(); } else { context.globalCompositeOperation = "source-over"; context.fillStyle = brushColor; context.arc(x, y, brushSize / 2, 0, 2 * Math.PI); context.fill(); } } function stopDrawing() { isDrawing = false; } function setEraser() { isErasing = true; brushColor = "white"; } function setBrush() { isErasing = false; brushColor = "black"; } </script> ``` 在上述示例中,你可以使用鼠标或触摸事件在 Canvas 上绘制图像。点击 "擦除笔" 按钮将调用 `setEraser()` 函数,设置为图像擦除笔;点击 "修补笔" 按钮将调用 `setBrush()` 函数,设置为图像修补笔。通过调整 `brushSize` 和 `brushColor` 变量,可以更改笔刷的大小和颜色。使用鼠标或触摸事件绘制时,根据当前设置的笔刷类型进行相应的绘制操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值