2011-11-06 5 views
8

El resultado del borde cuadrado resulta ser de diferente ancho, parece que el ancho del borde derecho e inferior es 2 veces más ancho que el ancho del borde izquierdo y superior. ¿Por qué tan raro? Quiero que el borde de todos los lados tenga el mismo ancho.HTML5 Canvas Draw Rect - ¿Tienes ancho de frontera Diff?

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>HTML5 Test</title> 
<script type="text/javascript"> 
    function draw() { 
    var canvas = document.getElementById('rectangle'); 
    var ctx = canvas.getContext('2d'); 

    ctx.save(); 
    ctx.lineWidth = 30; 
    ctx.fillStyle = "black"; 
    ctx.fillRect(0,0,100,100); 
    ctx.strokeStyle = "red"; 
    ctx.strokeRect(0,0,100,100);   
    ctx.restore(); 
    } 
</script> 
</head> 

<body onload="draw()"> 
<canvas id="rectangle"></canvas> 
</body> 
</html> 

enter image description here

Respuesta

7

Eso es debido a que su frontera se está cortada en la parte superior y la izquierda, porque ahí es donde comienza la tela, y si su rectángulo empieza en (0,0), la izquierda del borde izquierdo La coordenada x del final será -30.

Haga las coordenadas de inicio por encima de 30 (para que el final de sus bordes no sea negativo), y funcionará bien.

Demo