【问题标题】:How can I fullscreen my canvas & make it fill the screen?如何全屏显示我的画布并使其充满屏幕?
【发布时间】:2014-03-19 04:50:04
【问题描述】:

我有一个 HTML5 画布,当它进入全屏时,它不会填满整个屏幕。

如果我只更改 canvas.style.width/height 那么它可以工作,但显示看起来很糟糕,而且鼠标坐标也放错了位置。

js

var canvas = document.getElementById("canvas");

var mouseX = 0;
var mouseY = 0;

canvas.style.left = 0;
canvas.style.top = 0;

onmousemove = function(event) {
    mouseX = (event.pageX - parseFloat(canvas.style.left, 10)) + document.body.scrollLeft;
    mouseY = (event.pageY - parseFloat(canvas.style.top, 10)) + document.body.scrollTop;
}

document.body.addEventListener("keydown", function (event) {
    switch (event.keyCode) {
        case 70:
            if (canvas.requestFullScreen) {
                canvas.requestFullScreen();
            }
            else if (canvas.webkitRequestFullScreen) {
                canvas.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT);
            } 
            else if (canvas.mozRequestFullScreen) {
                canvas.mozRequestFullScreen();
            }
        break;
    }
});

function on_fullscreen_change() {
    if(document.mozFullScreen || document.webkitIsFullScreen) {
        canvas.style.position = "absolute";
        canvas.style.left = 0;
        canvas.style.top = 0;
        canvas.style.width = screen.width+"px";
        canvas.style.height = screen.height+"px";
        canvas.width = parseFloat(canvas.style.width, 10);
        canvas.height = parseFloat(canvas.style.height, 10);
    }
    else {
        canvas.style.left = 0;
        canvas.style.top = 0;
        canvas.style.width = "1280px";
        canvas.style.height = "720px";
        canvas.width = parseFloat(canvas.style.width, 10);
        canvas.height = parseFloat(canvas.style.height, 10);
    }
}

document.addEventListener('mozfullscreenchange', on_fullscreen_change);
document.addEventListener('webkitfullscreenchange', on_fullscreen_change);

window.setInterval(function(){

    var context = canvas.getContext('2d');
    context.fillStyle = '#0e6eae';
    context.fillRect(mouseX, mouseY, 150, 100);

}, 10);

function getMouseX(){
    return mouseX;
}

function getMouseY(){
    return mouseY;
}

css

:-webkit-full-screen { width: 100%; height: 100%; background: #000; }

编辑:您可以在http://liveweave.com/g5WLW5下载测试文件

【问题讨论】:

    标签: javascript html google-chrome canvas


    【解决方案1】:

    尝试添加:

    canvas.width = screen.width;
    canvas.height = screen.height;
    

    canvas.width 和 canvas.style.width 是两个不同的东西。第一个调整画布上下文的大小,第二个缩放它的表示。

    【讨论】:

    • 如果我这样做,显示会出错。 (您可以在这里下载测试文件并按F键liveweave.com/g5WLW5查看)我需要画布占据整个屏幕但是画布渲染区域应该是720p(1280x720)。
    • 使用 var rect = c.getBoundingClientRect(); canvas.width = rect.width; canvas.height = rect.height;似乎保持了 1280 x 768 的画布大小,但图形有点模糊,鼠标坐标错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 2020-10-29
    • 1970-01-01
    相关资源
    最近更新 更多