亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

WPF如何開發Surface Dial

發布時間:2021-09-17 09:31:56 來源:億速云 閱讀:104 作者:小新 欄目:編程語言

這篇文章主要介紹了WPF如何開發Surface Dial,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

示例:

public MainWindow()
        {
            InitializeComponent();//SetRadialControllerConfiguration();var interop = (IRadialControllerInterop)System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMarshal
                .GetActivationFactory(typeof(RadialController));

            Guid guid = typeof(RadialController).GetInterface("IRadialController").GUID;

            Window window = Window.GetWindow(this);var wih = new WindowInteropHelper(window);
            IntPtr hWnd = wih.Handle;// Create a reference to the RadialController.radialController = interop.CreateForWindow(hWnd, ref guid);string iconFileName = "Assets\\dial_icon_custom_item.png";string filePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, iconFileName);var getItemImageOperation = StorageFile.GetFileFromPathAsync(filePath);
            getItemImageOperation.Completed += new AsyncOperationCompletedHandler<StorageFile>(AddMenuItemFromImage);// Declare input handlers for the RadialController.radialController.RotationChanged += RadialController_RotationChanged; ;
        }

還有個很關鍵的類RadialControllerInterfaces.cs

  [System.Runtime.InteropServices.Guid("787cdaac-3186-476d-87e4-b9374a7b9970")]
    [System.Runtime.InteropServices.InterfaceType(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsIInspectable)]interface IRadialControllerConfigurationInterop
    {
        RadialControllerConfiguration GetForWindow(IntPtr hwnd, [System.Runtime.InteropServices.In]ref Guid riid);
    }

    [System.Runtime.InteropServices.Guid("1B0535C9-57AD-45C1-9D79-AD5C34360513")]
    [System.Runtime.InteropServices.InterfaceType(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsIInspectable)]interface IRadialControllerInterop
    {
        RadialController CreateForWindow(IntPtr hwnd, [System.Runtime.InteropServices.In]ref Guid riid);
    }

這個類提供了CreateForWindow方法可以讓我們創建RadialController對象,個人覺得這個接口很玄乎,上邊的Guid特性(這個是叫特性吧?)是寫死的,問了工程師說這個不用改,這不就很坑了,如果不是有個demo,我怎么知道怎么寫,,,

作為弱雞,這里我也有問題請教大家:

1.這些特性的作用,平時自己寫代碼貌似只用過【datacontract】

 
[System.Runtime.InteropServices.Guid("1B0535C9-57AD-45C1-9D79-AD5C34360513")]
[System.Runtime.InteropServices.InterfaceType(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsIInspectable)]    

2.MainWindow中代碼

var interop = (IRadialControllerInterop)System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMarshal
                .GetActivationFactory(typeof(RadialController));

總覺得閱讀性這么差呢,看不懂,或許是我從未見過,對這個方法不熟?

微軟工程師給我的這個Demo我發現有兩個Bug(他本人也表示還沒寫完,是Dirty Demo),一個是SetRadialControllerConfiguration這個方法里異常,不能用,導致不能初始化Dial的菜單,每次啟動應用都會往菜單里

添加一項;另一個是焦點問題,當長按dial選擇了其他菜單,例如音量,再返回我們的demo,發現此時dial仍然控制的是音量

感謝你能夠認真閱讀完這篇文章,希望小編分享的“WPF如何開發Surface Dial”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

wpf
AI

红桥区| 东阿县| 栾川县| 江西省| 左云县| 深圳市| 新沂市| 黄陵县| 突泉县| 鄄城县| 景东| 从化市| 鹤庆县| 大英县| 舒城县| 璧山县| 大新县| 宜黄县| 石台县| 平舆县| 汶川县| 固原市| 吴川市| 如东县| 东源县| 得荣县| 霍山县| 临洮县| 双城市| 明水县| 海伦市| 德安县| 乐陵市| 白玉县| 明溪县| 望城县| 科技| 琼海市| 休宁县| 九江市| 杭锦旗|