Pee*_*Haa 96 javascript html5 canvas
我正在用HTML中的新canvas元素进行一些实验.
我只是想在画布上添加一个图像,但由于某些原因它不起作用.
我有以下代码:
HTML
<canvas id="viewport"></canvas>
Run Code Online (Sandbox Code Playgroud)
CSS
canvas#viewport { border: 1px solid white; width: 900px; }
Run Code Online (Sandbox Code Playgroud)
JS
var canvas = document.getElementById('viewport'),
context = canvas.getContext('2d');
make_base();
function make_base()
{
base_image = new Image();
base_image.src = 'img/base.png';
context.drawImage(base_image, 100, 100);
}
Run Code Online (Sandbox Code Playgroud)
图像存在,我没有JavaScript错误.图像不显示.
它一定是非常简单的我错过了......
Tho*_*mas 195
也许你应该等到图像加载后才能绘制它.试试这个:
var canvas = document.getElementById('viewport'),
context = canvas.getContext('2d');
make_base();
function make_base()
{
base_image = new Image();
base_image.src = 'img/base.png';
base_image.onload = function(){
context.drawImage(base_image, 0, 0);
}
}
Run Code Online (Sandbox Code Playgroud)
即在图像的onload回调中绘制图像.
这是在画布上绘制图像的示例代码-
$("#selectedImage").change(function(e) {
var URL = window.URL;
var url = URL.createObjectURL(e.target.files[0]);
img.src = url;
img.onload = function() {
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.drawImage(img, 0, 0, 500, 500);
}});
Run Code Online (Sandbox Code Playgroud)
在上面的代码中 selectedImage 是一个输入控件,可用于在系统上浏览图像。有关在保持纵横比的同时在画布上绘制图像的示例代码的更多详细信息:
http://newapputil.blogspot.in/2016/09/show-image-on-canvas-html5.html
你必须使用.onload
let canvas = document.getElementById("myCanvas");
let ctx = canvas.getContext("2d");
const drawImage = (url) => {
const image = new Image();
image.src = url;
image.onload = () => {
ctx.drawImage(image, 0, 0)
}
}
Run Code Online (Sandbox Code Playgroud)
这就是为什么
如果您在创建画布后首先加载图像,则画布将无法传递所有图像数据来绘制图像。所以你需要首先加载图像附带的所有数据,然后你可以使用drawImage()
归档时间: |
|
查看次数: |
211763 次 |
最近记录: |