zoukankan      html  css  js  c++  java
  • 2018-2-13-win10-uwp-改变鼠标

    title author date CreateTime categories
    win10 uwp 改变鼠标
    lindexi
    2018-2-13 17:23:3 +0800
    2018-2-13 17:23:3 +0800
    Win10 UWP

    经常在应用需要修改光标,显示点击、显示输入,但是有些元素不是系统的,那么如何设置鼠标? 本文主要:UWP 设置光标,UWP 移动鼠标

    设置光标

    需要写一点代码来让程序比较容易看到,什么光标对于什么。

    UWP 设置的光标有些看不懂,直接看不知道他是干什么

    在xaml写代码:

        
            <StackPanel>
                <TextBlock Margin="10,10,10,10" Text="Hand" PointerEntered="button_OnPointerEntered"></TextBlock>
                <TextBlock Margin="10,10,10,10" Text="Arrow" PointerEntered="button_OnPointerEntered"></TextBlock>
                <TextBlock Margin="10,10,10,10" Text="Cross" PointerEntered="button_OnPointerEntered"></TextBlock>
                <TextBlock Margin="10,10,10,10" Text="Help" PointerEntered="button_OnPointerEntered"></TextBlock>
                <TextBlock Margin="10,10,10,10" Text="Beam" PointerEntered="button_OnPointerEntered"></TextBlock>
            </StackPanel>

    代码写好了,他可以在鼠标移入TextBlock 进入函数,可以在函数修改UWP 鼠标光标

    首先使用Windows.UI.Xaml.Window.Current.CoreWindow.PointerCursor 设置或获取光标。

    需要设置光标需要用Windows.UI.Core.CoreCursor

    他有一些比较多用的类型,下面是他们对于代码

    • Hand 点击

    • Arrow 正常

    • Cross 十字

    • Help 帮助

    • Wait 等待

    • Beam 输入

    于是对应界面

        
            private void button_OnPointerEntered(object sender, PointerRoutedEventArgs e)
            {
                string str = (sender as TextBlock)?.Text as string;
                uint n = 1;
                switch (str)
                {
                    case "Hand":
                        Window.Current.CoreWindow.PointerCursor = new Windows.UI.Core.CoreCursor(Windows.UI.Core.CoreCursorType.Hand, n);
                        break;
                    case "Arrow": Window.Current.CoreWindow.PointerCursor = new Windows.UI.Core.CoreCursor(Windows.UI.Core.CoreCursorType.Arrow, n); break;
                    case "Cross": Window.Current.CoreWindow.PointerCursor = new Windows.UI.Core.CoreCursor(Windows.UI.Core.CoreCursorType.Cross, n); break;
                    case "Help": Window.Current.CoreWindow.PointerCursor = new Windows.UI.Core.CoreCursor(Windows.UI.Core.CoreCursorType.Help, n); break;
                    case "Beam": Window.Current.CoreWindow.PointerCursor = new Windows.UI.Core.CoreCursor(Windows.UI.Core.CoreCursorType.IBeam, n); break;
                }
                
            }
    

    试试把代码放到工程,可以看到UWP 光标改变。

    如果不知道 n 是什么,我可以说,自定义光标就是使用n,但是复杂。

    很少会有需要自己做光标。如果需要自己做,请看自定义光标

    移动鼠标

    有时候需要把鼠标移动到一个元素上,UWP 移动鼠标和改变光标一样。

    移动鼠标,设置CoreWindow.PointerPosition

    在界面放一个按钮,点击他,移动鼠标

                 var p = new Point(Window.Current.Bounds.X + Window.Current.Bounds.Width / 2, Window.Current.Bounds.Y + Window.Current.Bounds.Height / 2);
                Window.Current.CoreWindow.PointerPosition = p;

    这样移动很简单,移动是屏幕坐标,不是应用坐标,需要对移动加上窗口移动

    https://blogs.msdn.microsoft.com/devfish/2012/08/01/customcursors-in-windows-8-csharp-metro-applications/

  • 相关阅读:
    ThreadLocal用法
    Spring Cloud Alibaba 使用RestTemplate进行服务消费
    Spring Cloud Alibaba 使用Nacos作为配置管理中心
    Spring Cloud Alibaba 使用Nacos作为服务注册中心
    Spring Cloud Alibaba 介绍及工程准备
    Redission 支持GsonCodec
    Maven Archetype快速构建项目
    拜占庭将军问题
    Paxos算法详解
    Paxos、Raft分布式一致性算法应用场景(转载)
  • 原文地址:https://www.cnblogs.com/lindexi/p/12085508.html
Copyright © 2011-2022 走看看