2012-06-24 21 views
4

在我看來,在某些情況下,從鼠標讀取更高的精度值,而不僅僅是當前屏幕分辨率的一系列離散像素座標,可能會有用。很明顯,在GUI中不需要這樣做,但對於某些遊戲來說,將它與屏幕分辨率關聯起來可能沒有任何意義。爲什麼不能將鼠標座標作爲浮點值獲取?

爲什麼我們不得不將它讀爲像素座標而不是原始模擬值?

回答

2

在Windows至少,你可以獲取更高分辨率的座標,從0到0xFFFF,而不是轉化爲屏幕座標中的鼠標位置,用於支持高解析度報告

獲取高分辨率點設備。在x和y座標中,點的範圍可以從0到65,535, (0xFFFF)。這是絕對座標指示設備(如繪圖板)提供的分辨率爲 。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms646259(v=vs.85).aspx

一個可以使用的非標比例達到Mac上的子像素分辨率根據一個答案在這裏:

High resolution and high framerate mouse coordinates on OSX? (Or other solution?)

無論是回答這個問題被接受,但可能值得進一步調查。

0

這取決於使用的語言和環境。
例如在Pharo或Squeak中使用的Morphic GUI smalltalk使用浮點數作爲其座標

這在此處列出accepted answer

的Morphic在self

+0

另一方面,這不會提供更高的精度 –

-4

被orignally實現,因爲鼠標不提供模擬,或浮點,值。這已經是一個翻譯。

任何人都在關注評論-1?

+0

鼠標提供的數據密度比屏幕更大。爲了充分利用鼠標的精度,並在屏幕上顯示它,鼠標的座標需要縮小。這或者導致浮點數,或者截斷/舍入。 OP和我贊成浮動。儘管如此,這似乎相當苛刻,這一直到-3沒有評論... –

2

Windows使用WM_INPUTWM_MOUSEMOVE以及DirectInput和XInput;

默認情況下,它僅支持WM_MOUSEMOVE主Windows圖形用戶界面,這是完全基於整數的,但如果你同時實現WM_INPUTWM_MOUSEMOVE,你可以移動鼠標光標亞像素精度。

有些方案顯然會佔用大量的利用了這一點,如第1人稱射擊遊戲,網頁瀏覽器(網頁縮放和滾動條),以及圖像編輯程序(如GIMP,PHOTOSHOP等)

另外,讓鼠標同時發送WM_INPUTWM_MOUSEMOVE,並使Windows外殼本身支持它,將使鼠標移動通常顯得更加平滑。