“在設(shè)置這樣一個矩形范圍的時候,往往右下角坐標(biāo)是不包括在內(nèi)的,也就是說右下角實際坐標(biāo)為 right - 1, bottom -1,所以 right - left 是可以直接算出其長度的。 ”
--------------------
你說的這個是結(jié)論,至于原因,就是為什么在繪制的時候不去包括右下角(right, bottom),而去繪制(right - 1, bottom - 1)?正如我文中說的,是左上約定在起的作用。
簡單概括一下就是:
在一般的坐標(biāo)系里面,比如畫一個矩形(0,0,2,2),會經(jīng)過(2,2)這點。而在以像素為單位的屏幕坐標(biāo)系里面,像素有大小,所以如果以其中心點為基準(zhǔn)(坐標(biāo)點),在繪制的時候,就會包含(right, bottom)這個像素的1/4部分,但是1個像素是最小單元,要么繪制,要么不繪制,所以,為了解決無法繪制1/4像素的問題,就統(tǒng)統(tǒng)向左向上移動1/2像素,繪制移動后的矩形區(qū)域,其大小(面積)不變,位置變了,新的矩形的右下角成了(right - 1, bottom - 1)。
to mroske:
如果一個坐標(biāo)它的長度因該為1,那么 p1(0, 0) 到 p2(2, 0) 的長度應(yīng)該為3。即 (0,0), (1,0), (2,0),如果直接 2 - 0 = 2,那這個得到只是坐標(biāo)差距,并不是長度。
------------------------------------------
不知道你這里說的長度是什么意思?
在屏幕上的最小單位是一個像素,屏幕上的坐標(biāo)是以以像素為單位的,所以坐標(biāo)之間的差距就是多少個像素.
p1(0, 0) 到 p2(2, 0) 之間的差距為2,表明中間跨越2個像素.或者說長度為2個像素. 所以不能填充(0,0),(1,0),(2,0) 3個像素.我們可以作個實驗,你調(diào)用一些圖形庫中的畫線函數(shù),畫出p1(0, 0) 到 p2(2, 0)的直線,最后在屏幕上出現(xiàn)的應(yīng)該是2個像素,而不是3個.