既に作成してあるcanvasに、クリックして位置を定め、図形を追加表示します。
関数 init で、元となるcanvasを作成し、そこから、ここでの処理を行う関数 clickDrow を呼び出します。
↓<canvas id=""
width=""
height="">:
「既作成canvas」の作成と表示
クリック点取得(これを実行してから、キャンバスをクリックする)
右下にクリック点座標が表示
通常の CANVAS を用いたコードです。
他のプログラムに内部から呼び出すのは困難ですので、CANVAS を引き継ぐために
HTMLに <p><span id='canvas-name'></span></p>" を記述しておき、
このプログラム中に document.getElementById('canvas-name').innerHTML = キャンバス名;
を記述しておくことが必要です。
function クリック点取得(i) {
var キャンバス名 = document.getElementById("canvas-name").innerHTML;
var canvas = document.getElementById(キャンバス名);
canvas.onclick = function(e) {
var rect = e.target.getBoundingClientRect();
var クリック点X = e.clientX - Math.floor(rect.left);
var クリック点Y = e.clientY - Math.floor(rect.top);
// 表示場所への表示
if (i==0) {
document.cform.cx0.value = クリック点X;
document.cform.cy0.value = クリック点Y;
}
else if (i==1) {
document.cform.cx1.value = クリック点X;
document.cform.cy1.value = クリック点Y;
}
}
}
次のような形式になります。
function 図形作成表示(図形) {
var キャンバス名 = document.getElementById("canvas-name").innerHTML;
var canvas = document.getElementById(キャンバス名);
var ctx = canvas.getContext("2d");
var cx0 = eval(document.cform.cx0.value); // クリック点取得で作成したformからの取得
:
var lineWidth = eval(document.iform.lineWidth.value); // 図形作成オプションからの取得
:
if (図形 == "rect") { // 長方形のとき
ctx.beginPath();
// ┐
ctx.rect(cx0, cy0, cx1-cx0, cy1-cy0); // │
ctx.strokeStyle = strokeStyle; // 枠線の色 │
ctx.lineWidth = lineWidth; // 線の太さ │オプションはこの間で有効
if (fillStyle != "none") { // 塗りつぶし │
ctx.fillStyle = fillStyle; │
ctx.fill(); // │
} // ┘
ctx.closePath();
ctx.stroke();
}
:
}