unity获取电磁笔压感_【WPF】获取电磁笔的压感
WPF 不僅支持觸控,也支持筆的輸入,比如現在比較高大上的電磁筆。便宜的板子一般不配備電磁筆,而是配電容筆,雖然也號稱XXX級壓感,但是效果自然不可與電磁筆相比。
UIElement 類規范了UI元素的基本輪廓,在該類公開的事件中,大凡以 Stylus 開頭的事件,都與書寫筆有關。這里大伙伴要注意一點,當筆尖按下屏幕時會發生?StylusDown 事件,但是,此時我們還不能夠得到筆的壓力值。
緊隨其后就會發生?StylusMove 事件。筆按下后就會馬上引上這個事件,而且,只要筆在屏幕上移動就會不斷引發這個事件,前提是你在移動筆尖時不能離開屏幕。如果筆尖提起,會發生?StylusUp 事件;筆尖提起后,處于懸空狀態,只要筆還在感應范圍內,移動筆尖會發生?StylusInAirMove 事件。注意區別,筆尖按下時移動發生的是?StylusMove 事件,而懸空后移動會發生?StylusInAirMove 事件。
筆輸入的數據由?StylusPoint 結構來封裝,其中,X和Y相信你也猜到,就是筆尖的坐標,這點與鼠標事件相似。不過,筆輸入的數據還帶有一個?PressureFactor 字段,對,重點就是它了,它表示筆的壓力。
不管你的筆是 256 級壓感,還是 1024 級 2048 級壓感,PressureFactor 字段值始終在 0 和 1 之間,它是個浮點數值,數字越小,表示壓力越小;反之表示壓力越大。
好了,經過老周上面一堆廢話,估計你也已經知道這活怎么干了。下面,還是老規矩,學習不干活是不行的,所以,我們得動手,才能弄懂。
首先,在窗口上放一個矩形。
把這個矩形的填充顏色設為紅色,待會兒咱們感應電磁筆的壓力,動態調整矩形的透明度。壓力越大,矩形越紅,比那些網紅還要紅。
接著,處理相關事件。
然后編寫處理代碼。
private void OnStyluesMove(objectsender, StylusEventArgs e)
{var pts = e.GetStylusPoints(null);foreach (var p inpts)
{
rect.Opacity=p.PressureFactor;
}
}
因為筆尖在屏幕上移動時,可能一次會產生N個坐標,所以,GetStylusPoints方法返回一個點的集合,這個方法在調用時,需要傳遞一個元素引用,用來作為參照對象,即,所獲取的坐標是相對于這個對象。此處用 null 表示獲取到的點是相對于根,如窗口。
由于筆尖的一次移動可能產生多個點,這里我順便 foreach 了一下,其實,眼睛看到的最后一輪設置的值。因而你完全可以去掉這個 foreach ,在點集合中,只取出一個點出來就行了(最后一個點)。我姑且保留 foreach ,大伙兒可以下載源碼后,自行玩耍。
巧合的是,Opacity 屬性的值范圍是 0 到 1,PressureFactor 的值范圍也是 0 到 1,所以,直接賦值就完事了,不用轉化計算。
最后運行程序,然后拿電磁筆狠狠地扎幾下窗口,你就能看到壓感的變化了。效果請參考下面的高清無碼無水印動圖。
好,今天就聊到這里,see you。
總結
以上是生活随笔為你收集整理的unity获取电磁笔压感_【WPF】获取电磁笔的压感的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bat java 启动脚本_bat批处理
- 下一篇: 一般一个前端项目完成需要多久_制作分销小