canvas 写入图片自适应大小设置
时间: 2023-06-07 12:06:52 浏览: 330
你可以使用 canvas 的 drawImage 方法来实现图片自适应大小设置。首先需要获取到图片的宽度和高度,然后根据 canvas 的宽度和高度计算出图片需要显示的大小。具体实现可以参考以下代码:
```javascript
// 获取图片元素和 canvas 元素
var img = document.getElementById('img');
var canvas = document.getElementById('canvas');
// 获取图片宽度和高度
var imgWidth = img.width;
var imgHeight = img.height;
// 计算图片需要显示的大小
var canvasWidth = canvas.width;
var canvasHeight = canvas.height;
var scale = Math.min(canvasWidth / imgWidth, canvasHeight / imgHeight);
var displayWidth = imgWidth * scale;
var displayHeight = imgHeight * scale;
// 渲染图片到 canvas 上
var context = canvas.getContext('2d');
context.drawImage(img, 0, 0, displayWidth, displayHeight);
```
这样就可以实现将图片在 canvas 上自适应显示的效果。
相关问题
创建一个三层画布,每层画布都有一个自适应内嵌框,载入本页面会自动读取代码里写入的三个本地html,通过三个按钮控制哪个页面可见
您可以使用HTML、CSS和JavaScript来创建这样的三层画布。下面是一个简单的例代码,实现了您的要求:
```html
<!DOCTYPE html>
<html>
<head>
<style>
/* 设置画布容器的样式 */
.canvas {
position: relative;
width: 100%;
height: 100vh;
}
/* 设置内嵌框的样式 */
.frame {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: none; /* 默认隐藏 */
}
/* 设置按钮的样式 */
.btn {
margin: 10px;
}
</style>
</head>
<body>
<!-- 画布容器 -->
<div class="canvas">
<!-- 内嵌框1 -->
<iframe class="frame" src="page1.html"></iframe>
<!-- 内嵌框2 -->
<iframe class="frame" src="page2.html"></iframe>
<!-- 内嵌框3 -->
<iframe class="frame" src="page3.html"></iframe>
</div>
<!-- 控制按钮 -->
<button class="btn" onclick="showFrame(1)">显示页面1</button>
<button class="btn" onclick="showFrame(2)">显示页面2</button>
<button class="btn" onclick="showFrame(3)">显示页面3</button>
<script>
function showFrame(index) {
var frames = document.getElementsByClassName('frame');
// 隐藏所有内嵌框
for (var i = 0; i < frames.length; i++) {
frames[i].style.display = 'none';
}
// 显示指定的内嵌框
frames[index - 1].style.display = 'block';
}
</script>
</body>
</html>
```
请将上述代码保存为一个HTML文件,并将`page1.html`,`page2.html`和`page3.html`这三个本地HTML文件放置在与该HTML文件相同的目录下。然后,您可以在浏览器中打开该HTML文件,点击不同的按钮来显示不同的页面。
阅读全文