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