canvas05:在canvas标签中设置宽高与在style中设置宽高的区别

在html中,我们给一个元素设置宽高通常会使用css样式设置。而canvas他有自己的宽高属性,我们可以在canvas中设置宽和高,但是canvas的width与height属性与css中设置width与height有没有区别,有什么区别呢,我们可以通过代码去实现对比一下。

第一种: 在canvas中设置宽高

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        canvas {
            border: 1px solid #000;
        }
    </style>
</head>
<body>
    <canvas id="mycanvas" width="200" height="200"></canvas>
</body>
</html>
<script>
    var mycanvas = document.getElementById('mycanvas');
    var ctx = mycanvas.getContext('2d');
    ctx.moveTo(50,50);
    ctx.lineTo(150,50);
    ctx.lineTo(150,150);
    ctx.lineTo(50,150);
    ctx.closePath();
    ctx.fillStyle = 'red';
    ctx.fill();
</script>

 

效果:

然后我们将宽高调整为500;

代码:

 <canvas id="mycanvas" width="200" height="200"></canvas>

效果:

以上我们可以看的,画布明显变大,里面的图形大小不变。

第二种:在style中设置宽高

代码:

<head>
    <style>
        canvas {
            border: 1px solid #000;
            width: 500px;
            height: 500px;
        }
    </style>
</head>
<body>
    <canvas id="mycanvas"></canvas>
</body>

效果:

我们发现,不仅画布变大了,而且里面的图形也会变大变形。

可以简单理解:canvas相当与我们电脑中自带的“画图”工具,有画布,画板,绘图工具构成。当我在canvas中设置宽高,相当于使用鼠标拖动了画布的边框使画布变大,但是里面的内容不会变化。当我在style中设置了宽高,相当于点击放大镜对整个图像进行方法,使得里面的内容也会跟着变化。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在UniApp,你可以使用`<canvas>`标签来将多张图片拼接成一张图片,然后将其显示在`<image>`标签上。以下是一个简单的示例代码: 1. 首先,在你的页面添加`<canvas>`和`<image>`标签: ```html <template> <view> <canvas id="myCanvas" style="display: none;"></canvas> <image :src="mergedImage" mode="aspectFit"></image> </view> </template> ``` 2. 在页面的`<script>`标签,定义相关的数据和方法: ```javascript <script> export default { data() { return { mergedImage: '' // 用于显示拼接后的图片 } }, methods: { mergeImages() { const ctx = uni.createCanvasContext('myCanvas') // 加载图片 const image1 = uni.createImage() image1.src = 'path/to/image1.jpg' const image2 = uni.createImage() image2.src = 'path/to/image2.jpg' // 等待图片加载完成 Promise.all([this.loadImage(image1), this.loadImage(image2)]) .then(() => { // 绘制图片到canvas上 ctx.drawImage(image1, 0, 0, 100, 100) // 假设图片大小为100x100 ctx.drawImage(image2, 100, 0, 100, 100) // 导出图片数据 ctx.toTempFilePath({ success: (res) => { this.mergedImage = res.tempFilePath // 将拼接后的图片路径赋值给mergedImage,用于显示在<image>标签上 } }) }) }, loadImage(image) { return new Promise((resolve, reject) => { image.onload = () => resolve() image.onerror = (e) => reject(e) }) } }, mounted() { this.mergeImages() } } </script> ``` 在上面的示例,我们使用`uni.createCanvasContext`创建一个画布上下文,并调用`drawImage`方法将图片绘制到画布上。最后,我们使用`toTempFilePath`方法导出拼接后的图片,并将其路径赋值给`mergedImage`变量,以便在`<image>`标签显示。 请注意替换示例代码的图片路径为你自己的图片路径。另外,这只是一个简单的示例,你可以根据实际需求进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值