1. 程式人生 > 其它 >dotnet 讀 WPF 原始碼筆記 為什麼預設的筆跡觸控點的壓感是 0.5 的值

dotnet 讀 WPF 原始碼筆記 為什麼預設的筆跡觸控點的壓感是 0.5 的值

技術標籤:# WPF原始碼WPFc#C#dotnetWPF

本文是我在讀 WPF 原始碼做的筆記

在 WPF 中,如 WPF 觸控到事件 部落格內容,在 WPF 中將會通過 StylusPointCollection 傳入原始的觸控資料,也就是 int[] rawPacketData 來建立觸控點

在 StylusPointCollection 的建構函式裡面,將會讀取 int[] rawPacketData 的內容,拿到觸控點

        internal StylusPointCollection(StylusPointDescription stylusPointDescription,
int[] rawPacketData, GeneralTransform tabletToView, Matrix tabletToViewMatrix)

在建立 StylusPoint 時,使用下面程式碼

    StylusPoint newPoint = new StylusPoint(p.X, p.Y, StylusPoint.DefaultPressure, _stylusPointDescription, data, false, false);

這裡的 StylusPoint.DefaultPressure 如下程式碼

    public struct StylusPoint
    {
internal static readonly float DefaultPressure = 0.5f; }

這就是為什麼觸控的預設壓感是 0.5 的原因

而如果是是通過帶壓感的筆的觸控點,那麼在 StylusPointDescription 描述裡面,將會 ContainsTruePressure 屬性表示當前觸控點是否存在壓感,此時在建立完成觸控點之後,會使用如下邏輯,讀取壓感設定給觸控點

 bool containsTruePressure = stylusPointDescription.ContainsTruePressure;

 StylusPoint
newPoint = new StylusPoint(p.X, p.Y, StylusPoint.DefaultPressure, _stylusPointDescription, data, false, false); if (containsTruePressure) { //use the algoritm to set pressure in StylusPoint int pressure = rawPacketData[i + 2]; newPoint.SetPropertyValue(StylusPointProperties.NormalPressure, pressure); }

當前的 WPF 在 https://github.com/dotnet/wpf 完全開源,使用友好的 MIT 協議,意味著允許任何人任何組織和企業任意處置,包括使用,複製,修改,合併,發表,分發,再授權,或者銷售。在倉庫裡面包含了完全的構建邏輯,只需要本地的網路足夠好(因為需要下載一堆構建工具),即可進行本地構建

知識共享許可協議
本作品採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。歡迎轉載、使用、重新發布,但務必保留文章署名林德熙(包含連結:http://blog.csdn.net/lindexi_gd ),不得用於商業目的,基於本文修改後的作品務必以相同的許可釋出。如有任何疑問,請與我聯絡。