Javascript 将画布放置在另一个画布上时文本模糊

Javascript 将画布放置在另一个画布上时文本模糊,javascript,jquery,html,canvas,Javascript,Jquery,Html,Canvas,我想在鼠标移动时在画布上显示鼠标的x位置。有人能告诉我为什么这两张画布上的文字如此大而模糊,还有什么方法可以达到这两张画布之间的透明度 <body style="margin: 0; padding: 0; height: 100%; width: 100%; overflow: hidden;"> <canvas id="myCanvas" style="display: block; height: 100%; width: 100%;">

我想在鼠标移动时在画布上显示鼠标的x位置。有人能告诉我为什么这两张画布上的文字如此大而模糊,还有什么方法可以达到这两张画布之间的透明度

<body style="margin: 0; padding: 0; height: 100%; width: 100%; overflow: hidden;">
  <canvas id="myCanvas" style="display: block; height: 100%; width: 100%;">
            Your browser does not support the HTML5 canvas tag.</canvas>  <canvas id="temp">
            Your browser does not support the HTML5 canvas tag.</canvas>
    <script type="text/javascript">

        var c = document.getElementById("myCanvas");

        var ctx = c.getContext("2d");

        var hgap = 0;
        var vgap = 0;
        var rows, cols;
        var annotation_x = 1;
        var row = 0; var col = 0;
        //ctx.font = "14px Arial";

        var t = document.getElementById("temp");
        tctx = t.getContext("2d");
        // tctx.lineWidth = 10;
        tctx.lineJoin = 'round';
        tctx.lineCap = 'round';
        tctx.strokStyle = 'red';


        var mouse = { x: 0, y: 0 };
        c.addEventListener('mousemove', function (evt) {
        //    tctx.clearRect(0, 0, c.width, c.height);
            ctx.clearRect(0, 0, c.width, c.height);
            mouse.x = evt.pageX;
            mouse.y = evt.pageY;
            ctx.fillText(mouse.x, 10, 10);

        }, false);



    </script>
</body>

您的浏览器不支持HTML5画布标记。
您的浏览器不支持HTML5画布标记。
var c=document.getElementById(“myCanvas”);
var ctx=c.getContext(“2d”);
var-hgap=0;
var vgap=0;
var行,cols;
var注释_x=1;
var行=0;var-col=0;
//ctx.font=“14px Arial”;
var t=document.getElementById(“临时”);
tctx=t.getContext(“2d”);
//tctx.lineWidth=10;
tctx.lineJoin='round';
tctx.lineCap=‘圆形’;
tctx.strokStyle='红色';
变量鼠标={x:0,y:0};
c、 addEventListener('mousemove',函数(evt){
//tctx.clearRect(0,0,c.宽度,c.高度);
ctx.clearRect(0,0,c.宽度,c.高度);
mouse.x=evt.pageX;
mouse.y=evt.pageY;
填充文本(mouse.x,10,10);
},假);

问题不是因为有两个画布

问题是您使用CSS缩放画布,但不修改其像素数(
height
width
属性)。然后,结果是模糊的

如果不使用CSS进行缩放,结果很好:

或者,您可以尝试使用CSS属性(例如,
脆边
,)


调整浏览器大小(事件)时,您还可以修改
高度
宽度
属性,并重新绘制画布。

问题不是因为有两个画布

问题是您使用CSS缩放画布,但不修改其像素数(
height
width
属性)。然后,结果是模糊的

如果不使用CSS进行缩放,结果很好:

或者,您可以尝试使用CSS属性(例如,
脆边
,)

调整浏览器大小(事件)时,您还可以修改
高度
宽度
属性,并重新绘制画布。

^除非希望插入画布元素的内容,否则不应使用CSS缩放画布元素。考虑一个300×125px映像,你已经缩放到浏览器窗口的宽度和高度-图像会变得模糊。 如果您希望拥有全屏画布,则需要使用JS进行缩放:

var c = document.getElementById("myCanvas");
c.width = window.innerWidth;
c.height = window.innerHeight;
..或使用HTML:

<canvas width="1920" height="1080"></canvas>

^除非希望插入画布元素的内容,否则不应使用CSS缩放画布元素。考虑一个300×125px映像,你已经缩放到浏览器窗口的宽度和高度-图像会变得模糊。 如果您希望拥有全屏画布,则需要使用JS进行缩放:

var c = document.getElementById("myCanvas");
c.width = window.innerWidth;
c.height = window.innerHeight;
..或使用HTML:

<canvas width="1920" height="1080"></canvas>


为什么当鼠标位于左上角时它不显示?我知道它上面有临时画布。有什么方法可以修复吗this@Happy因为默认情况下,
body
有边距。您可以删除它(
body{margin:0;}
),或者对画布使用绝对或固定定位。为什么当鼠标位于左上角时它不显示?我知道我在它上面有临时画布..有什么方法可以修复吗this@Happy因为默认情况下,
body
有边距。你可以删除它(
body{margin:0;}
),或者对画布使用绝对或固定定位。酷,我有js代码,但没有意识到它会生效。酷,我有js代码,但没有意识到它会生效。