0

HTML5とjavascriptを使用してプロジェクトに取り組んでいます。ドキュメントが読み込まれるキャンバスがあります。

canvas = document.getElementById('pdf');
ctx = canvas.getContext('2d');

上記のキャンバスでは、ドキュメントが読み込まれます。実行時に個別のキャンバスとしてさまざまなシェイプを描画する必要があるため、描画時にシェイプごとに新しいキャンバスを作成する必要があります(必須)。

MouseDown

function mouse_Pressed(e) {
     getMouse(e);//getting current X and Y position
 x1=mx; y1=my;
    var cords=getMousePos(canvas,e); 
    annCanvas=document.createElement('canvas'); //Creating 
    annCanvasContext=annCanvas.getContext('2d');
     isDraw=true;isDrawAnn=true;
}

MouseMove

function mouse_Dragged(e)
{
    if(isDraw)
    {
    getMouse(e);
    x2=mx; y2=my;
    calculatePoints(x1,y1,x2,y2);
    var width=endX-startX;
    var height=endY-startY;
    annCanvas.style.position = "absolute";
    annCanvas.width=4; //Width of square
    annCanvas.style.left=""+startX+"px";
    annCanvas.style.top=""+startY+"px";
    annCanvas.height=height;
    annCanvas.style.zIndex="100000";

    document.getElementById("canvas").appendChild(annCanvas);
    annCanvasContext.fillStyle='rgb(255,255,0)';
    annCanvasContext.lineWidth=borderWidth;
    annCanvasContext.strokeRect(0,0,width,height);
    annCanvasContext.stroke();
 }
} 

MouseReleased

function mouse_Released(e)
{
 isDrag = false;
 isDraw=false;
 isDrawAnn=false;
}

主な問題は、境界線の幅が50の長方形を描画している場合、キャンバスの領域が少ないため(つまり、正しい形状)、そのキャンバスの外側の部分がカットされることです。だから私はキャンバスの高さ、幅をそのborderWidthで計算したいと思います。

4

1 に答える 1

0

これには、境界線の幅や幅などを考慮する必要があります。

function init() {
    var canvas = document.getElementById("canvas");
    var ctx = canvas.getContext("2d");
    var s = size(canvas);
    alert(s[0]);
}


function size(el) {
    var clientHeight = (el.offsetHeight > el.clientHeight) ? el.offsetHeight : el.clientHeight;
    var clientWidth = (el.offsetWidth > el.clientWidth) ? el.offsetWidth : el.clientWidth;
    return [clientWidth, clientHeight];
};

HTML:

<body onload="init();">
<canvas id="canvas" width="200" height="300" style="width: 500px; height: 400px; border: 10px solid brown;"></canvas>
</body>
于 2012-09-17T09:04:29.977 に答える