JavaScript html5 canvas實(shí)現(xiàn)圖片上畫超鏈接
更新時(shí)間:2017年10月20日 11:49:38 作者:_iorilan
這篇文章主要為大家詳細(xì)介紹了JavaScript html5 canvas實(shí)現(xiàn)圖片上畫超鏈接,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了html5 canvas在圖片上畫超鏈接的具體代碼,供大家參考,具體內(nèi)容如下
1. html
<canvas id="canvasFile" style="margin-top:15px;" width="500" height="400"></canvas> <input type="button" id="btnRedo" value="Re-Draw" class="btn btn-warning"/>
2. javascript
var photoW = 400;
var photoH = 300;
var photo;
// logic load image into canvas
// ...
// e.g.
// photo = new Image();
// photo.onload = function() {
// draw photo into canvas when ready
// ctx.drawImage(photo, 0, 0, photoW, photoH);
// };
// load photo into canvas
// photo.src = picURL;
// canvas highlight
var canvas = document.getElementById('canvasFile'),
ctx = canvas.getContext('2d'),
img = new Image;
var btnDone = document.getElementById('btnDone');
var btnRedo = document.getElementById('btnRedo');
ctx.strokeStyle = '#FF0000';
function DrawDot(x, y) {
var centerX = x;
var centerY = y;
var radius = 2;
ctx.beginPath();
ctx.arc(centerX, centerY, radius, 0, 2 * Math.PI, false);
ctx.fillStyle = 'red';
ctx.fill();
ctx.lineWidth = 2;
ctx.strokeStyle = '#FF0000';
ctx.stroke();
}
function startDrawing() {
ctx.drawImage(img, 0, 0, photoW, photoH);
canvas.onmousemove = mousemoving;
canvas.onmousedown = mousedownhandle;
canvas.onmouseup = mouseuphandle;
// ## mobile events
//touchstart – to toggle drawing mode “on”
//touchend – to toggle drawing mode “off”
//touchmove – to track finger position, used in drawing
canvas.addEventListener('touchmove', touchmove, false);
canvas.addEventListener('touchend', mouseuphandle, false);
btnRedo.onclick = function (e) {
ctx.clearRect(0, 0, ctx.width, ctx.height);
ctx.drawImage(photo, 0, 0, photoW, photoH);
savedrawing();
}
}
function savedrawing(e) {
var image = document.getElementById('canvasFile').toDataURL("image/jpeg");
image = image.replace('data:image/jpeg;base64,', '');
$("#imgNric1").val(image);
};
function mousemoving(e) {
if (drawing) {
mousedownhandle(e);
}
}
var drawing = false;
function mousedownhandle(e) {
drawing = true;
var r = canvas.getBoundingClientRect(),
x = e.clientX - r.left,
y = e.clientY - r.top;
DrawDot(x, y);
}
function mouseuphandle(e) {
savedrawing();
e.preventDefault();
drawing = false;
}
//// mobile touch events
function touchmove(e) {
if (e.clientX > 800) {
mousedownhandle(e);
return;
}
var r = canvas.getBoundingClientRect(),
//event.changedTouches[0].pageX + ":" + event.changedTouches[0].pageY;
x = e.changedTouches[0].pageX - r.left,
y = e.changedTouches[0].pageY - r.top;
DrawDot(x, y);
e.preventDefault();
}
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js數(shù)據(jù)類型轉(zhuǎn)換與流程控制操作實(shí)例分析
這篇文章主要介紹了js數(shù)據(jù)類型轉(zhuǎn)換與流程控制操作,結(jié)合實(shí)例形式分析了JavaScript數(shù)據(jù)類型轉(zhuǎn)換與流程控制相關(guān)原理、操作技巧與使用注意事項(xiàng),需要的朋友可以參考下2019-12-12
es6數(shù)組includes()用法實(shí)例分析
這篇文章主要介紹了es6數(shù)組includes()用法,結(jié)合實(shí)例形式分析了es6數(shù)組includes()針對(duì)給定值判斷的相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下2020-04-04

