【发布时间】:2015-05-07 18:11:30
【问题描述】:
构建一个网页,我试图在该网页上将图像设置为主画布的背景。实际图像是 1600x805,我正在尝试对应用程序进行编码,以便根据用户屏幕的尺寸放大或缩小图像。在Prime.js 中,我有一个对象来设置位于index.html 中的应用程序的canvas 元素的属性。这是该对象的代码:
function Prime(w,h){
if(!(function(){
return Modernizr.canvas;
})){ alert('Error'); return false; };
this.context = null;
this.self = this;
this.globalCanvasMain.w = w;
this.globalCanvasMain.h = h;
this.globalCanvasMain.set(this.self);
this.background.setBg();
}
Prime.prototype = {
constructor: Prime,
self: this,
globalCanvasMain: {
x: 0,
y: 0,
set: function(ref){
ref.context = document.getElementById('mainCanvas').getContext('2d');
$("#mainCanvas").parent().css('position', 'relative');
$("#mainCanvas").css({left: this.x, top: this.y, position: 'absolute'});
$("#mainCanvas").width(this.w).height(this.h);
}
},
background: {
bg: null,
setBg: function(){
this.bg = new Image();
this.bg.src = 'res/background.jpg';
}
},
drawAll: function(){
this.context.drawImage(this.background.bg, 0,0, this.background.bg.width,this.background.bg.height,
this.globalCanvasMain.x,this.globalCanvasMain.y, this.globalCanvasMain.w,this.globalCanvasMain.h);
}
};
像这样的外部对象与index.html 中的元素交互的主要接口是home.js。以下是那里发生的事情:
$(document).ready(function(){
var prime = new Prime(window.innerWidth,window.innerHeight);
setInterval(prime.drawAll(), 25);
});
出于某种原因,我对上下文的 drawImage 函数的调用仅从图像的左上角裁剪,并将其放大到用户屏幕的大小。为什么我看不到图像的其余部分?
【问题讨论】:
标签: javascript html oop canvas scale