由於需要用到ispointinpath
函式,所以必須得將滑鼠在視窗中的座標位置轉換到canvas畫布中的座標,今天發現網上這種非常常見的寫法其實是錯誤的!
**如下:
1.
function
windowtocanvas(canvas, x, y) ;
7.}
什麼時候會發生錯誤呢?
看下面的livescript**
1.canvas = document.queryselector \canvas
2.ctx = canvas.getcontext \2d
3.dpr = window.devicepixelratio || 1
4.width = parseint canvas.style.width
5.height = parseint canvas.style.height
6.canvas.width = width * dpr
7.canvas.height = height * dpr
8.ctx.scale dpr, dpr
當用到window.devicepixelratio
的時候,會出現滑鼠命明明擊中了path,卻出現ispointinpath
卻報false
的情況。
真正的window2canvas
寫法應該如下:
1.
window2canvas = (e) ->
2. rect = canvas.getboundingclientrect!
3. x = (e.clientx - rect.left) * canvas.width / rect.width
4. y = (e.clienty - rect.top ) * canvas.height / rect.height
5.
在視窗中繪製滑鼠拖曳框
chapter i 在wm mousemove中繪製.有時候要求在乙個視窗中繪製滑鼠的拖曳框,就像是使用者在桌面上拖曳圖示顯示的框一樣.對於這樣的矩形框windows的api提供了乙個函式drawfocusrect,當然這個函式是可以的,不過這個函式有兩個小問題,那就是它的第二個引數是乙個rect引...
視窗滑鼠事件的響應 在滑鼠視窗中繪製矩形的程式
這裡主要是訓練怎麼去響應滑鼠響應事件,那怎麼去定義滑鼠響應函式呢?void cvmousecallback int event 滑鼠響應事件的型別如滑鼠右鍵彈起,右鍵按下,cv event lbuttondown,cv event lbuttondown int x,滑鼠響應是所在的位置,這裡x,y...
C 如何獲取滑鼠相對當前視窗的座標
可以用control.mouseposition獲得當前滑鼠的座標,使用pointtoclient計算滑鼠相對於某個控制項的座標,如下 第一種 滑鼠相對於螢幕左上角的座標 point screenpoint control.mouseposition 第二種 滑鼠相對於窗體左上角的座標 point ...