HTML5簡單的坐標網格知識


用html5我想對於坐標和網格應該不會陌生,那么接下來我簡單的寫下我的理解。

坐標:在HTML5的Canvas中是這樣的定義的:

畫的不咋的,很好理解吧。仔細看看不就是一些線和點唄,定義了一些數字而已,我們要做的不就是獲取這些個數字。

既然知道了坐標,那么我們可以做很多的事了。這里是簡單的介紹下,在html中點的話,肯定是瀏覽器規定了,我們只需要自己去調用而已,那么我們怎么知道呢?

那么就需要網格了。但是我們每次都要去畫網格才知道坐標不是很麻煩。所以自己可以估計下畫個草圖呀。不用每次都去畫了。有了設計圖,那么我們調用就是html5中的

moveTo()和lineTo()了。這兩個方法自己去看,很簡單。

接下來看看網格:

網格:也就是些橫線和豎線而已。怎么來的?還不是moveTo和lineTo的應用畫出來的。代碼如下:

//豎線
for (var i = stepx + 0.5; i < context.canvas.width; i += stepx) {
context.beginPath();
context.moveTo(i, 0);
context.lineTo(i, context.canvas.height);
context.stroke();
}

//橫線
for (var i = stepy + 0.5; i < context.canvas.height; i += stepy) {
context.beginPath();
context.moveTo(0, i);
context.lineTo(context.canvas.width, i);
context.stroke();
}

一看就明白了。

豎線既然叫豎,那么相對坐標而言,不就是說隨着橫軸變化,那么也就是x變化,那么y呢?肯定是0和canvas的高了。

橫線也是一樣了,隨着豎軸變化,也就是y變化,x就是0和canvas的寬了。

那么上面的stepx和stepy分別就是繪制網格時候的步數了,也就是豎線與豎線,橫線與橫線之間的距離。

為什么加0.5呢?那就是像素邊界與線段的知識了,說白了也就是0-1之間我們放在0.5上,像素寬為1像素我們正好可以填充。

我們怎么獲取坐標呢?

網上方法很多,其實都一樣。用了Canvas. getBoundingClientRect()來獲取Canvas對象相對屏幕的相對位置:該函數返回一個Object對象,該對象有6個屬性:top,lef,right,bottom,width,height;這里的top、left和css中的理解很相似,width、height是元素自身的寬高,但是  right,bottom和css中的理解有點不一樣。right是指元素右邊界距窗口最左邊的距離,bottom是指元素下邊界距窗口最上面的距離。

那么我們說width和height是元素自身寬高什么概念呀?

就拿ie來說:

IE只返回top,lef,right,bottom四個值,不夠可以通過以下方法來獲取width,height的值:

    var ro = object.getBoundingClientRect();
    var Width = ro.right - ro.left;
    var Height = ro.bottom - ro.top;

這就是元素自身寬高了。

那么在Canvas中的表示就是:

function windowToCanvas(canvas, x, y) {
var bbox = canvas.getBoundingClinetRect();//獲取Canvas對象相對屏幕的相對位置
return {x:x-bbox.left*(canvas.width/bbox.width),
y:bbox.top*(canvas.height/bbox.hight)}
}

很常見的獲取坐標。為什么這么取,看你了。如何用當然是通過監聽和觸發了,網上看看好了,沒有具體代碼了。

 

晚安了,親們!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM