Android 锁屏 C# .NET 副本

2023-12-28

我希望在 Visual Studio C# 中创建一个模仿 Android 模式锁定屏幕的应用程序,并且想知道是否有人有任何这样做的提示。

这不是一个商业项目,不会赚钱,只是一点乐趣。

我一直在玩 WPF 项目,现在不知所措。我想到的唯一方法是在MouseDown事件,并使用 C# 中的绘制功能来“绘制”鼠标所在的位置,但我不认为这是最好的解决方案。

有这样做的想法吗?


看看这是否可以帮助你是粗略的代码。

public partial class PatternLock : UserControl
    {
        bool isMouseDown = false;

        private ObservableCollection<ToggleButton> selectedobject = new ObservableCollection<ToggleButton>();
        public PatternLock()
        {
            InitializeComponent();

        }

        internal ObservableCollection<int> buttons = new ObservableCollection<int>();

        private void layoutroot_Checked(object sender, RoutedEventArgs e)
        {
            if (e.OriginalSource is ToggleButton)
                buttons.Add(Convert.ToInt32(((ToggleButton)e.OriginalSource).Content));
        }

        private void layoutroot_Unchecked(object sender, RoutedEventArgs e)
        {
            if (e.OriginalSource is ToggleButton)
            {
                int i = Convert.ToInt32(((ToggleButton)e.OriginalSource).Content);
                buttons.Remove(i);

            }
        }

        internal void ResetPattern()
        {
            if (buttons != null)
            {
                buttons.Clear();
                foreach (ToggleButton item in layoutroot.Children)
                {
                    item.IsChecked = false;
                }
            }

        }
    }

XAML

<UserControl x:Class="WPFTestings.LockPattern.PatternLock"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             d:DesignHeight="300"
             d:DesignWidth="300"
             mc:Ignorable="d">
    <UserControl.Resources>



        <Style TargetType="{x:Type ToggleButton}">
            <Setter Property="FocusVisualStyle" Value="{StaticResource ButtonFocusVisual}" />

            <Setter Property="BorderBrush" Value="{StaticResource ButtonNormalBorder}" />
            <Setter Property="BorderThickness" Value="1" />
            <Setter Property="Foreground" Value="{DynamicResource TextBrush}" />
            <Setter Property="HorizontalContentAlignment" Value="Center" />
            <Setter Property="VerticalContentAlignment" Value="Center" />
            <Setter Property="Padding" Value="1" />
            <Setter Property="FontSize" Value="50" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ToggleButton}">
                        <ControlTemplate.Resources>
                            <Storyboard x:Key="HoverOn">
                                <DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
                                                               Storyboard.TargetName="HoverBorder"
                                                               Storyboard.TargetProperty="(UIElement.Opacity)">
                                    <SplineDoubleKeyFrame KeyTime="00:00:00.1000000" Value="0.5" />
                                </DoubleAnimationUsingKeyFrames>
                                <DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
                                                               Storyboard.TargetName="HoverShineBorder"
                                                               Storyboard.TargetProperty="(UIElement.Opacity)">
                                    <SplineDoubleKeyFrame KeyTime="00:00:00.1000000" Value="1" />
                                </DoubleAnimationUsingKeyFrames>
                            </Storyboard>
                            <Storyboard x:Key="HoverOff">
                                <DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
                                                               Storyboard.TargetName="HoverBorder"
                                                               Storyboard.TargetProperty="(UIElement.Opacity)">
                                    <SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="0" />
                                </DoubleAnimationUsingKeyFrames>
                                <DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
                                                               Storyboard.TargetName="HoverShineBorder"
                                                               Storyboard.TargetProperty="(UIElement.Opacity)">
                                    <SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="0" />
                                </DoubleAnimationUsingKeyFrames>
                            </Storyboard>
                            <Storyboard x:Key="CheckedOn">
                                <DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
                                                               Storyboard.TargetName="CheckedBorder"
                                                               Storyboard.TargetProperty="(UIElement.Opacity)">
                                    <SplineDoubleKeyFrame KeyTime="00:00:00.1000000" Value="0.5" />
                                </DoubleAnimationUsingKeyFrames>
                            </Storyboard>
                            <Storyboard x:Key="CheckedOff">
                                <DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
                                                               Storyboard.TargetName="CheckedBorder"
                                                               Storyboard.TargetProperty="(UIElement.Opacity)">
                                    <SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="0" />
                                </DoubleAnimationUsingKeyFrames>
                            </Storyboard>
                            <Storyboard x:Key="PressedOn">
                                <DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
                                                               Storyboard.TargetName="Pressed"
                                                               Storyboard.TargetProperty="(UIElement.Opacity)">
                                    <SplineDoubleKeyFrame KeyTime="00:00:00.1000000" Value="1" />
                                </DoubleAnimationUsingKeyFrames>

                            </Storyboard>
                            <Storyboard x:Key="PressedOff">
                                <DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
                                                               Storyboard.TargetName="Pressed"
                                                               Storyboard.TargetProperty="(UIElement.Opacity)">
                                    <SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="0" />
                                </DoubleAnimationUsingKeyFrames>
                            </Storyboard>
                        </ControlTemplate.Resources>
                        <Grid x:Name="grid">

                            <Border x:Name="Border"
                                    Background="{DynamicResource NormalBrush}"
                                    BorderBrush="{DynamicResource NormalBorderBrush}"
                                    BorderThickness="{TemplateBinding BorderThickness}"
                                    CornerRadius="50"
                                    Padding="{TemplateBinding Padding}">
                                <Border.BitmapEffect>
                                    <OuterGlowBitmapEffect GlowColor="Red" GlowSize="10" />
                                </Border.BitmapEffect>
                            </Border>
                            <Border x:Name="CheckedBorder"
                                    Background="YellowGreen"
                                    BorderBrush="Green"
                                    BorderThickness="2"
                                    CornerRadius="50"
                                    Opacity="0"
                                    Padding="{TemplateBinding Padding}">
                                <Border.BitmapEffect>
                                    <OuterGlowBitmapEffect GlowColor="YellowGreen" GlowSize="10" />
                                </Border.BitmapEffect>
                            </Border>
                            <Border x:Name="HoverBorder"
                                    Background="YellowGreen"
                                    BorderBrush="{DynamicResource NormalBorderBrush}"
                                    BorderThickness="{TemplateBinding BorderThickness}"
                                    CornerRadius="50"
                                    Opacity="0"
                                    Padding="{TemplateBinding Padding}" />
                            <Border x:Name="HoverShineBorder"
                                    Background="{DynamicResource HoverShineBrush}"
                                    BorderBrush="{DynamicResource NormalBorderBrush}"
                                    BorderThickness="{TemplateBinding BorderThickness}"
                                    CornerRadius="50"
                                    Opacity="0"
                                    Padding="{TemplateBinding Padding}" />
                            <Border x:Name="Pressed"
                                    Background="YellowGreen"
                                    BorderBrush="Green"
                                    BorderThickness="2"
                                    CornerRadius="50"
                                    Opacity="0"
                                    Padding="{TemplateBinding Padding}" />
                            <Rectangle x:Name="Shine"
                                       Height="Auto"
                                       Margin="2,2,2,2"
                                       VerticalAlignment="Stretch"
                                       Opacity="1"
                                       RadiusX="3"
                                       RadiusY="3"
                                       Stroke="{x:Null}">
                                <Rectangle.Fill>
                                    <LinearGradientBrush StartPoint="0.5,0.042" EndPoint="0.5,0.971">
                                        <GradientStop Offset="0" Color="#26FFFFFF" />
                                        <GradientStop Offset="1" Color="#00FFFFFF" />
                                        <GradientStop Offset="0.467" Color="#26FFFFFF" />
                                        <GradientStop Offset="0.475" Color="#00FFFFFF" />
                                    </LinearGradientBrush>
                                </Rectangle.Fill>
                            </Rectangle>

                            <ContentPresenter Margin="4,4,4,4"
                                              HorizontalAlignment="Center"
                                              VerticalAlignment="Center"
                                              RecognizesAccessKey="True"
                                              SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
                        </Grid>

                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Trigger.ExitActions>
                                    <BeginStoryboard x:Name="HoverOff_BeginStoryboard" Storyboard="{StaticResource HoverOff}" />
                                </Trigger.ExitActions>
                                <Trigger.EnterActions>
                                    <BeginStoryboard Storyboard="{StaticResource HoverOn}" />
                                </Trigger.EnterActions>
                            </Trigger>
                            <Trigger Property="IsPressed" Value="True">
                                <Trigger.ExitActions>
                                    <BeginStoryboard x:Name="PressedOff_BeginStoryboard" Storyboard="{StaticResource PressedOff}" />
                                </Trigger.ExitActions>
                                <Trigger.EnterActions>
                                    <BeginStoryboard x:Name="PressedOn_BeginStoryboard" Storyboard="{StaticResource PressedOn}" />
                                </Trigger.EnterActions>
                            </Trigger>
                            <Trigger Property="IsKeyboardFocused" Value="true" />
                            <Trigger Property="IsChecked" Value="true">
                                <Trigger.ExitActions>
                                    <BeginStoryboard x:Name="CheckedOff_BeginStoryboard" Storyboard="{StaticResource CheckedOff}" />
                                </Trigger.ExitActions>
                                <Trigger.EnterActions>
                                    <BeginStoryboard x:Name="CheckedOn_BeginStoryboard" Storyboard="{StaticResource CheckedOn}" />
                                </Trigger.EnterActions>
                                <Setter TargetName="Pressed" Property="BitmapEffect">
                                    <Setter.Value>
                                        <OuterGlowBitmapEffect GlowColor="YellowGreen" GlowSize="10" />
                                    </Setter.Value>
                                </Setter>
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="false">
                                <Setter Property="Foreground" Value="#ADADAD" />
                                <Setter TargetName="Border" Property="Background" Value="{DynamicResource DisabledBackgroundBrush}" />
                                <Setter TargetName="Border" Property="BorderBrush" Value="{DynamicResource DisabledBorderBrush}" />
                                <Setter TargetName="grid" Property="Opacity" Value="0.5" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <Trigger Property="IsChecked" Value="True">
                    <Setter Property="Foreground">
                        <Setter.Value>
                            <SolidColorBrush Color="{DynamicResource BlackColor}" />
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </Style.Triggers>
        </Style>

    </UserControl.Resources>
    <UniformGrid x:Name="layoutroot"
                 Columns="3"
                 Rows="3"
                 ToggleButton.Checked="layoutroot_Checked"
                 ToggleButton.Unchecked="layoutroot_Unchecked">
        <ToggleButton x:Name="btn1"
                      Margin="5"
                      Content="1" />
        <ToggleButton x:Name="btn2"
                      Margin="5"
                      Content="2" />
        <ToggleButton x:Name="btn3"
                      Margin="5"
                      Content="3" />
        <ToggleButton x:Name="btn4"
                      Margin="5"
                      Content="4" />
        <ToggleButton x:Name="btn5"
                      Margin="5"
                      Content="5" />
        <ToggleButton x:Name="btn6"
                      Margin="5"
                      Content="6" />
        <ToggleButton x:Name="btn7"
                      Margin="5"
                      Content="7" />
        <ToggleButton x:Name="btn8"
                      Margin="5"
                      Content="8" />
        <ToggleButton x:Name="btn9"
                      Margin="5"
                      Content="9" />
    </UniformGrid>
</UserControl>

使用它添加对话框和按钮以匹配它

   if (string.Concat(patternLock1.buttons).ToString() == "1359")
           {
               this.Close();
           }
           else
           {
               patternLock1.ResetPattern();
           }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 锁屏 C# .NET 副本 的相关文章

  • 用于在标头更改时重新编译的简单 C 项目的示例 makefile

    有谁有完整的 makefile 可以执行以下操作 如果 HEADER 文件发生更改 则重建项目 cpp 文件在 makefile 中列出 头文件未在 makefile 中列出 头文件允许与 cpp 文件具有不同的名称 部分cpp文件没有头文
  • Makefile 和 .Mak 文件 + CodeBlocks 和 VStudio

    我对整个 makefile 概念有点陌生 所以我对此有一些疑问 我正在 Linux 中使用 CodeBlocks 创建一个项目 我使用一个名为 cbp2mak 的工具从 CodeBlocks 项目创建一个 make 文件 如果有人知道更好的
  • Libev,如何将参数传递给相关回调

    我陷入了 libev 中争论的境地 通常 libev 在类似的函数中接收包 接收回调 没关系 但是实际操作中 我们需要派遣一个亲戚 写回调 根据收到的包裹处理具体工作 例如 S RECV MSG pstRecvMsg S RECV MSG
  • Android 中的库可以有自己的意图过滤器吗?

    我想开发一个可以包含在其他 Android 应用程序中的库来拦截某些类型的意图 是否可以 我创建了一个库和一个测试项目 两者都有自己的AndroidManifest xml文件 在库的清单中 我为操作 TEST 定义了一个意图过滤器 但是
  • C# 获取数据表中所有重复行的计数

    我通过运行存储过程来填充数据集 并且从数据集中填充数据表 DataSet RawDataSet DataAccessHelper RunProcedure storedprocedureName this will just return
  • onTaskRemoved() 在华为和小米设备中没有被调用

    我一直在使用onTaskRemoved 服务中的方法 用于检测应用程序何时通过滑动从设备最近列表中删除 我执行一些日志记录和发生这种情况时需要执行的一些其他操作 它工作完美 然后我在运行Android 6 0的华为设备上检查了这个方法 该方
  • 让网络摄像头在 OpenCV 中工作

    我正在尝试让我的网络摄像头在 Windows 7 64 位中的 OpenCV 版本 2 2 中捕获视频 但是 我遇到了一些困难 OpenCV 附带的示例二进制文件都无法检测到我的网络摄像头 最近我发现这篇文章表明答案在于重新编译一个文件 o
  • MySQL 连接器 C++ 64 位在 Visual Studio 2012 中从源代码构建

    我正在尝试建立mySQL 连接器 C 从源头在视觉工作室2012为了64 bit建筑学 我知道这取决于一些boost头文件和C 连接器 跑步CMake生成一个项目文件 但该项目文件无法编译 因为有一大堆非常令人困惑的错误 这些错误可能与包含
  • 当目标小于 Android O 时,如何在 Android O 上创建快捷方式?

    背景 Android O 对快捷方式的工作方式进行了各种更改 https developer android com preview behavior changes html as https developer android com
  • 在哪里可以找到 Microsoft.Build.Utilities.v3.5

    如何获取 Microsoft Build Utilities v3 5 我正在使用 StyleCop 4 7 Stylecop dll 中的 StyleCop msbuild 任务似乎依赖于 Microsoft Build Utilitie
  • fs-extra:源和目标不能相同。 (科尔多瓦)

    我在使用 cordova 构建时遇到错误 Error Source and destination must not be the same 构建系统 Ionic ionic cli 4 10 1 ionic framework ionic
  • 构建 C# MVC 5 站点时项目之间的处理器架构不匹配

    我收到的错误如下 2017 年 4 月 20 日构建 13 23 38 C Windows Microsoft NET Framework v4 0 30319 Microsoft Common targets 1605 5 警告 MSB3
  • Android-dispatchTouchEvent 给了我一个 StackOverflowError

    这里我有一个带有 setOnTouchListener 的 ViewFlipper 它工作得很好 然后我膨胀 ReLayNewsItem 然后将其添加到 ViewFlipper 现在我希望 WebView web 监听触摸事件并将它们传递给
  • 如何从 Windows Phone 7 模拟器获取数据

    我有一个 WP7 的单元测试框架 它在手机上运行 结果相当难以阅读 因此我将它们写入 XDocument 我的问题是 如何才能将这个 XML 文件从手机上移到我的桌面上 以便我可以实际分析结果 到目前为止 我所做的是将 Debugger B
  • 如果将变量设置为等于新对象,旧对象会发生什么?

    假设我们有一个 X 类not有一个超载的operator 功能 class X int n X n 0 X int n n n int main X a 1 an object gets constructed here more code
  • winform c# 中的弹出窗口

    我正在开发一个需要弹出窗口的项目 但问题是我还希望能够通过表单设计器在此弹出窗口中添加文本框等 所以基本上我有一个按钮 当您单击它时 它将打开我在表单设计器中设计的另一个窗口 我一直在谷歌搜索 但还没有找到我需要的东西 所以我希望你们能帮助
  • 从文件路径显示图像视图?

    我需要仅使用文件名而不是资源 ID 来显示图像 ImageView imgView new ImageView this imgView setBackgroundResource R drawable img1 我在可绘制文件夹中有图像
  • ContentDialog Windows 10 Mobile XAML - 全屏 - 填充

    我在项目中放置了一个 ContentDialog 用于 Windows 10 上的登录弹出窗口 当我在移动设备上运行此项目时 ContentDialog 未全屏显示 并且该元素周围有最小的填充 在键盘上可见 例如在焦点元素文本框上 键盘和内
  • 如何在 C# 中获取 CMD/控制台编码

    我需要指定正确的代码页来使用 zip 库打包文件 正如我所见 我需要指定控制台编码 在我的例子中为 866 C Users User gt mode Status for device CON Lines 300 Columns 130 K
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有

随机推荐

  • 实体框架从 SQL Server 视图返回损坏/交换数据

    我从 SQL Server 中的视图进行简单查询 SELECT PricePerM FROM RealtyStatParent ORDER BY PricePerM 当我在 SQL Management Studio 中执行查询时 我得到了
  • 如何在 docker 中创建和运行 .net Core 控制台应用程序

    我有一个 NET Core 2 1 控制台应用程序 我想在 Docker 映像中运行此控制台应用程序 我是 Docker 新手 只是想弄清楚它 这时候我就有了一个Dockerfile 其灵感来自微软的例子 https learn micro
  • 查找作为 c 中函数的参数接收的整数数组的大小[重复]

    这个问题在这里已经有答案了 我想找到作为参数传递给函数的整数数组的大小 这是我的代码 void getArraySize int arr int len sizeof arr sizeof arr 0 printf Array Length
  • 代号一中的文本屏幕,如何读取文本文件?

    我想向我的 Codename One 应用程序添加帮助屏幕 由于文本比其他字符串更长 我想将其放在单独的文件中并将其添加到应用程序包中 我该怎么做呢 我应该将文本文件放在哪里 以及如何轻松地将其一次性读取到字符串中 我已经知道如何将字符串放
  • 为什么我们要包含 stdlib.h?

    C功能malloc 定义如下stdlib h 如果我们不包含这个文件 它应该会给出一个错误 但是这个代码可以正常工作 但有一点警告 我的问题是 如果malloc 没有这个头文件也可以工作 那么为什么我们需要包含它呢 请帮助澄清我的概念 in
  • 模板专业化:非内联函数定义问题

    以下代码可以正确编译 include
  • ActionScript 属性 - 公共 Getter、受保护的 Setter

    是否有可能拥有一个具有公共 getter 和受保护 setter 的属性 我有以下代码 public class Mob extends Sprite snip private var health Number tried making
  • 有人可以向我解释一下 PHP 中的 pack() 函数吗?

    我想了解更多关于pack PHP 中的函数 https secure php net manual en function pack php https secure php net manual en function pack php
  • 如何在 Qt 中上移选定行

    我有一个QTableView有 3 行和 2 列 这里我使用的是QStandardItemModel 我想在单击 QPushButton 时向上 向下移动一行 如何在中向上 向下移动一行QTableView 感谢您的回复瓦汉乔 我已经尝试过
  • Android 中的 Mifare Ultralight C 身份验证 (2.3.6)

    我正在尝试验证 Mifare Ultralight C ISO IEC 14443 2 和 14443 3 A 型兼容 标签 我使用Android中提供的MifareUltralight transceive 函数发送身份验证命令 我还检查
  • 在 tomcat catalina.properties 中注入环境变量 [Kubernetes]

    我正在使用 kubernetes 进行 Web 应用程序部署 containers name myapp image tomcat8 jre8 latest imagePullPolicy Always env name DATABASE
  • 如何更改 Winforms 中的 TrackBar 刻度颜色?

    我有一个使用轨迹栏的 winforms 应用程序 BackColor 属性可以更改 但这样做会使每个 刻度 的颜色几乎不可见 我没有看到修改 勾号 颜色的显式属性 我是否缺少某些东西或改变蜱虫颜色的方法 TrackBar 是本机 Windo
  • Apollo 2.1 中的多重查询/变更

    我需要一些使用 Apollo 2 1 中新的查询和突变组件的帮助 尤其是多个查询和突变 我有以下问题 我有一个 graphql 请求 该请求取决于之前的 graphql 结果 我该如何处理这个问题 如何在已经有查询的组件中添加两个不同的突变
  • 设置 Linux 中可用物理内存总量的限制

    我知道我应该设置mem MEMORY LIMIT 但我不知道在运行时或启动时该去哪里 以便对操作系统控制的总物理内存设置限制 我正在运行 I O 基准测试 并且我想限制可用的总体物理内存量 我找到了我正在寻找的答案 基本上 设置总可用物理内
  • 关于tinymce的“windowManager.open”方法的“body”参数

    我正在查看这个创建tinyMCE插件的示例 我想做的是打开 弹出窗口 弹出窗口内的内容以编程方式指定 无需在特定 url 加载物理页面 在tinymce容器中添加type file的输入元素 https stackoverflow com
  • GetQueuedCompletionStatus 永远阻塞

    我正在编写一个服务器应用程序 我想使用 IOCompletion 端口 因此我为服务器编写了一个原型 但我遇到了 GetQueuedCompletionStatus 的问题 它永远不会返回 它会阻塞 下面是我的代码 bool CreateS
  • UserControl 依赖属性设计时

    我正在 WPF 中创建一个简单的用户控件 其中包含一个按钮内的 TextBlock
  • 如何在数据源位置中使用sitecore查询? (动态数据源)

    是否可以将数据源位置 而不是数据源 设置为 sitecore 查询 我想要做的是将子布局的数据源位置设置为包含它的项目 当前项目 下的文件夹 子布局数据源位置应指向当前项目下的文件夹 所以我尝试将数据源位置设置为query Items 但这
  • 在讨论编程语言时,“强大”意味着什么?

    在编程语言讨论 比较的背景下 术语 能力 是什么意思 它有明确的含义吗 即使是一个定义不明确的含义 假设有人说 X 语言比 Y 语言更强大 或提出相同的问题 他们的意思是什么 或者他们想找出什么信息 它没有明确定义的含义 在这些类型的讨论中
  • Android 锁屏 C# .NET 副本

    我希望在 Visual Studio C 中创建一个模仿 Android 模式锁定屏幕的应用程序 并且想知道是否有人有任何这样做的提示 这不是一个商业项目 不会赚钱 只是一点乐趣 我一直在玩 WPF 项目 现在不知所措 我想到的唯一方法是在