重新計算圖形左上角座標實現canvas上的圖形拖拽
Canvas
依賴解析度
不支援事件處理器
弱的文字渲染能力
能夠以 .png 或 .jpg 格式儲存結果影像
最適合影像密集型的遊戲,其中的許多物件會被頻繁重繪
SVG
不依賴解析度
支援事件處理器
最適合帶有大型渲染區域的應用程式(比如谷歌地圖)
複雜度高會減慢渲染速度(任何過度使用 DOM 的應用都不快)
不適合遊戲應用
1 canvas:不支援事件處理,所以必須有一部分邏輯來做 來做模擬事件 和dom物件的作用。一般會使用一個基本的canvas庫
2 canvas: 弱的文字渲染能力(canvas沒有文字型別的概念)
3 svg: 對於瀏覽器來說 dom的複雜度會直接影響瀏覽器的效率。(崩潰 白屏 當機 )
寫個canvas 拖拽的demo
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>canvas拖拽</title>
</head>
<canvas id="myCanvas" width="400" height="400"></canvas>
<body>
<script>
var Draw={
init:function(){
this.cObj=document.getElementById("myCanvas").getContext("2d");
this.event()
this.draw.prototype=this
this.p=new this.draw(45,45,70,70,"red")
},
draw:function(x,y,w,h,color){
this.cObj.clearRect(this.x-1,this.y-1,this.w+2,this.h+2);
this.x=x
this.y=y
this.w=w
this.h=h
this.color=color
this.cObj.strokeStyle=this.color
this.cObj.strokeRect(this.x,this.y,this.w,this.h);
},
OnMouseMove:function(evt){
if(this.p.isDown){
//重新計算矩形左上角座標,滑鼠點作為移動中的矩形的中心點
var X=evt.layerX-this.p.w/2;
var Y=evt.layerY-this.p.h/2;
this.p.draw(X,Y,70,70,"red");
}
},
OnMouseDown:function(evt){
var X=evt.layerX;
var Y=evt.layerY;
if(X<this.p.x+this.p.w&&X>this.p.x)
{
if(Y<this.p.y+this.p.h&&Y>this.p.y){
this.p.isDown=true;
}
}
else
{
this.p.isDown=false;
}
},
OnMouseUp:function(){
this.p.isDown=false
},
event:function(){
var canvas=document.getElementById("myCanvas")
canvas.addEventListener("mousedown",this.OnMouseDown.bind(this),false);
canvas.addEventListener("mousemove",this.OnMouseMove.bind(this),false);
canvas.addEventListener("mouseup",this.OnMouseUp.bind(this),false);
}
}
Draw.init()
</script>
</body>
</html>
相關文章
- 畫影圖形: SVG & Canvas 圖形對比SVGCanvas
- 計算機圖形學計算機
- 使用 HTML5 Canvas 實現圓形圖片裁剪並上傳HTMLCanvas
- Canvas 畫圖 - 滑鼠移動圖形Canvas
- canvas圖形編輯器Canvas
- WPF基礎:在Canvas上繪製圖形Canvas
- 線性代數在前端中的應用(二):實現滑鼠拖拽旋轉元素、Canvas圖形前端Canvas
- 計算機圖形學:虛擬和現實世界的融合計算機
- 計算機圖形學 第四章 圖形變換計算機
- Canvas drag 實現拖拽拼圖小遊戲Canvas遊戲
- 圖形驗證碼設計實現
- 拖拽編寫SVG圖形化工具(二)SVG
- canvas 圖形圍繞中心旋轉Canvas
- 圖形、GDI + 和圖表(在網頁上嵌入動態圖形)網頁
- java圖形驗證碼實現Java
- 計算機圖形學之紋理的作用計算機
- HTML5拖拽API實現vue樹形拖拽元件HTMLAPIVue元件
- canvas核心技術-如何繪製圖形Canvas
- HTML5使用canvas繪製圖形HTMLCanvas
- 計算機圖形學-線性過濾計算機
- 計算機圖形學課程總結計算機
- canvas實現的圓形時鐘效果Canvas
- shell的圖形化實現簡單示例
- R語言ggplot2去掉圖形和座標軸間隙R語言
- 計算機圖形學之矩陣變換計算機矩陣
- 計算機圖形學入門·光柵化計算機
- WPS 2007中圖形標註的實現方法
- uni-app使用wx-canvas實現微信小程式上顯示地圖map和座標geoAPPCanvas微信小程式地圖
- JavaScript圖片裁剪的無變形實現方法JavaScript
- 計算機圖形學(二)輸出圖元_20_章節總結_程式展示_蝸形線、心形線、螺旋線計算機
- Canvas入門實戰之用javascript物件導向實現一個圖形驗證碼CanvasJavaScript物件
- Glide實現圓角圖片,以及圓形圖片IDE
- 物件導向的例項應用:圖形計算器物件
- 數學在計算機圖形學中的應用計算機
- canvas系列教程之多線條組成圖形Canvas
- Vue.js實現圖形驗證碼Vue.js
- CircleImageView 圓形圖片頭像實現View
- 計算機圖形學原理及實踐——C語言描述pdf計算機C語言