canvas绘制文本和清除绘制

本文介绍了如何在HTML5 canvas上使用fillText和strokeText绘制文本,展示了文本颜色、字体设置以及对齐方式,并详细讲解了clearRect方法用于清除绘制区域。通过实例演示了如何结合这些技术提升图表的可读性和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

绘制文本

绘制文本的方法有两种:fillText和strokeText

fillText()有五个参数,第一个参数为绘制内容(字符串),第二个参数为起点x轴坐标,第三个参数为起点y轴坐标后两个参数可选,为最大宽度和最大高度。

strokeText类似,但是它无填充,简单来说就是文字不能被修改颜色。

文本颜色使用fillStyle属性指定

文本字体使用font属性指定:font:"字体大小  字体样式",两个值缺一不可。

textAlign属性指定水平方向对齐方式;

属性值有:start、left、center、right、end

textBaseline则指定垂直方向。

属性值有:top、hanging、middle 、alphabetic、ideographic、bottom

学会绘制文本后,我们完善一下昨天写的柱状图。

 <style>
        #cav{
            border: 1px solid black;
        }
    </style>
</head>
<body>
    <canvas id="cav" width="500" height="400"></canvas>
    <script>
        var cav =document.querySelector("#cav")
        var ctx= cav.getContext("2d")
        ctx.moveTo(50,350)
        ctx.lineTo(450,350)
        ctx.stroke()
        //假数据
        arr=[500,600,800,700,500,800]
        arr1=["一季度","二季度","三季度","四季度","最低季度","最高季度",]
        //设置最大高度
        var maxh=300/Math.max(...arr)
        for (let i = 0; i < arr.length; i++) {
            ctx.beginPath()
            ctx.font="14px weiruanyahei"
            ctx.fillStyle="purple"
            ctx.rect(80+i*60,350-maxh*arr[i],50,maxh*arr[i])
            ctx.fillText(arr1[i],85+i*60,370)
            ctx.fillText(arr[i],90+i*60,350-maxh*arr[i]-10)
            ctx.fill()
        }
        
    </script>

效果:

清除绘制

clearRect() 方法清空给定矩形内的指定像素

有四个参数:

第一个参数为矩形的左上角顶点的x轴坐标;

第二个参数为矩形的左上角顶点的y轴坐标;

第三个参数为矩形的宽度;

第四个参数为矩形的高度。

代码演示一下:

    <canvas id="cav" width="400" height="400"></canvas>

<script>
    var cav=document.querySelector("#cav")
    var cxt=cav.getContext("2d")
    //设置填充色
    cxt.fillStyle="pink"
    //创建一个填充颜色的矩形
    cxt.fillRect(100,100,100,200)
    //清除一半
    cxt.clearRect(100,100,100,100)

 运行代码后可以看到创建的矩形被清除了一半

 除了这里的清除绘制外,window对象还为我们提供了一个方法清除绘制。就是重设画布width,canvas.width=canvas.width,这样同样也能够清除前面的绘制。

Canvas绘制文本有两种方式:使用 `fillText()` 方法或使用 `strokeText()` 方法。当文本绘制在画布上之后,我们可以使用以下步骤对其进行编辑: 1. 获取文本所在的区域或坐标。可以使用 `measureText()` 方法获取文本的宽度高度等信息。 2. 使用 `clearRect()` 方法清除要编辑的文本区域。 3. 在清除的区域内重新绘制新的文本。可以使用 `fillText()` 或 `strokeText()` 方法。 下面是一个简单的例子,演示了如何编辑Canvas中的文本: ```html <!DOCTYPE html> <html> <head> <title>Canvas 文本编辑</title> </head> <body> <canvas id="myCanvas" width="400" height="200"></canvas> <script> var canvas = document.getElementById("myCanvas"); var ctx = canvas.getContext("2d"); // 绘制文本 ctx.font = "30px Arial"; ctx.fillText("Hello World", 50, 50); // 获取文本的宽度高度 var textWidth = ctx.measureText("Hello World").width; var textHeight = ctx.measureText("M").width; // 清除文本所在的区域 ctx.clearRect(50, 50 - textHeight, textWidth, textHeight); // 在清除的区域内重新绘制文本 ctx.font = "40px Arial"; ctx.fillText("Hello New World", 50, 50); </script> </body> </html> ``` 在这个例子中,我们使用 `fillText()` 方法在 Canvas绘制了一个文本。然后,我们使用 `measureText()` 方法获取了文本的宽度高度。接下来,我们使用 `clearRect()` 方法清除文本所在的区域,并使用 `fillText()` 方法重新绘制了一个新的文本。 注意,如果你需要在 Canvas 中编辑大量的文本或者需要实现更复杂的文本编辑功能,你可能需要使用一些第三方的库或者工具来帮助你完成这些任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值