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