精华内容
下载资源
问答
  • 介绍 标准销售订单加按钮生成客开销售订单 需求 在标准标准界面增加按钮点击按钮将当前销售订单数据通过调用BP的方式生成客开销售订单 设计 配置销售订单UIWebPart 使用U9插件工具实现 新建解决方案 新建项目新建一...
  • 本文给大家介绍的是一款基于 jQuery 实现放淘宝套餐选择的插件 主要是基于本地 json 数据的选择列创建有需要的小伙伴参考下 基于 jQuery 实现仿淘宝套餐选择插件 首先是页面 HTML 代码 代码如下 : <meta ...
  • JavaScript插件;本章目标;javascript插件的概述;javascript插件的引入方式;data属性;动画过渡效果;模态框;模态框布局和样式2-1;模态框布局和样式2-2;模态框尺寸;模态框声明选项;Javascript操作模态框3-1;...
  • 仿支付宝手势密码的功能在1280×720分辨率上显示有问题,在 854x480上没有问题,项目编码UTF-8默认编译版本4.4.2。
  • 仿支付宝手势密码的功能在1280×720分辨率上显示有问题,在 854x480上没有问题,项目编码UTF-8默认编译版本4.4.2。   实现思路: 1.要用一个类来表示这9个点中的第一个点。里面保留有当前点的上下左右的各个位置...
  • iOS仿安卓手势解锁

    2017-09-03 14:22:00
    界面是一个九宫格的布局.九宫格实现思路. 先确定有多少列 cloum = 3;...每一列的X的值与它当前所在的行有关 当前所在的列为:curColum = i % cloum 每一行的Y的值与它当前所在的行有关. 当前所在的行为:curRow = ...

    界面是一个九宫格的布局.九宫格实现思路.
    先确定有多少列 cloum = 3;
    计算出每列之间的距离
    计算为: CGFloat margin = (当前View的宽度 - 列数 * 按钮的宽度) / 总列数 + 1
    每一列的X的值与它当前所在的行有关
    当前所在的列为:curColum = i % cloum
    每一行的Y的值与它当前所在的行有关.
    当前所在的行为:curRow = i / cloum
     
    每一个按钮的X值为, margin + 当前所在的列 * (按钮的宽度+ 每个按钮之间的间距)
    每一个按钮的Y值为 当前所在的行 * (按钮的宽度 + 每个按钮之间的距离)
     
    无论是Xib,还是代码,都做一次初始化
     

    step1:界面搭建

    -(void)awakeFromNib{
        初始化
        [self setUP];
    }
    
    -(instancetype)initWithFrame:(CGRect)frame{
        if (self = [super initWithFrame:frame]) {
             初始化
            [self setUP];
        }
        return self;
    }
    
    初始化
    - (void)setUP{
       
        for (int i = 0; i < 9;  i++) {
            添加按钮
            UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
            设置图片
            [btn setImage:[UIImage imageNamed:@"gesture_node_normal"] forState:UIControlStateNormal];
            设置选中状态的下图片
            [btn setImage:[UIImage imageNamed:@"gesture_node_highlighted"] forState:UIControlStateSelected];
            添加按钮
            [self addSubview:btn];
        }
    }
    
    布局子控件
    - (void)layoutSubviews{
        [super layoutSubviews];
        总列数
        int cloumn = 3;
        CGFloat btnWH = 74;
        每列之间的间距
        CGFloat margin = (self.bounds.size.width - cloumn * btnWH) / (cloumn + 1);
        当前所在的列
        int curClounm = 0;
        当前所在的行
        int curRow = 0;
        CGFloat x = 0;
        CGFloat y = 0;
        取出所有的控件
        for (int i = 0; i < self.subviews.count; i++) {
            计算当前所在的列
            curClounm = i % cloumn;
            计算当前所在的行.
            curRow = i / cloumn;
            计算Y
            x = margin + (margin + btnWH) * curClounm;
            计算Y.
            y = (margin +btnWH) * curRow;
            UIButton *btn = self.subviews[i];
            btn.frame = CGRectMake(x, y, btnWH, btnWH);
        }
    }
    

     step2:按钮选中

     1 /**
     2  *  获取当前手指所在的点
     3  *
     4  *  @param touches touches集合
     5  *
     6  *  @return 当前手指所在的点.
     7  */
     8 - (CGPoint)getCurrentPoint:(NSSet *)touches{
     9     UITouch *touch = [touches anyObject];
    10     return [touch locationInView:self];
    11 }
    12 
    13 /**
    14  *  判断一个点在不在按钮上.
    15  *
    16  *  @param point 当前点
    17  *
    18  *  @return 如果在按钮上, 返回当前按钮, 如果不在返回nil.
    19  */
    20 - (UIButton *)btnRectContainsPoint:(CGPoint)point{
    21      遍历所有的子控件
    22     for (UIButton *btn in self.subviews) {
    23          判断手指当前点在不在按钮上.
    24         if (CGRectContainsPoint(btn.frame, point)) {
    25             在按钮上.返回当前按钮
    26             return btn;
    27         }
    28     }
    29     return nil;
    30    
    31 }
    32 
    33 手指点击时让按钮成选中状态
    34 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    35 
    36     判断当前手指在不在按钮上,如果在按钮上, 让按钮成为选中状态.  
    37     1.获取当前手指所在的点
    38     CGPoint curP = [self getCurrentPoint:touches];
    39     2.判断当前手指所在的点在不在按钮上.
    40     UIButton *btn  = [self btnRectContainsPoint:curP];
    41     if (btn) {
    42         btn.selected = YES;
    43     }
    44 }
    45 
    46 手指移动时,按钮选中,连线到当前选中的按钮
    47 -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    48 
    49     判断当前手指在不在按钮上,如果在按钮上, 让按钮成为选中状态.
    50     1.获取当前手指所在的点
    51     CGPoint curP = [self getCurrentPoint:touches];
    52     2.判断当前手指所在的点在不在按钮上.
    53     UIButton *btn  = [self btnRectContainsPoint:curP];
    54     if (btn) {
    55         btn.selected = YES;
    56     }
    57 }

    step3:连线

     1 @interface ClockView()
     2 
     3 /**
     4  *  选中的按钮数组.
     5  *  每次选中一个按钮时,都把按钮添加到数组当中.移动添加到按钮当中时做一次重绘.
     6  *  重绘过程中取出所有保存的按钮, 判断是不是第一个按钮, 如果是第一个按钮,那就让它成为路径的起点.
     7  *  如果不是第一个按钮,那就添加一根线到按钮的中心点.
     8  */
     9 @property(nonatomic,strong)NSMutableArray *selectBtn;
    10 
    11 @end
    12 
    13 懒加载数组.
    14 -(NSMutableArray *)selectBtn{  
    15     if (_selectBtn == nil) {
    16         _selectBtn = [NSMutableArray array];
    17     }
    18     return _selectBtn;
    19 }
    20 
    21 手指点击时让按钮成选中状态
    22 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    23 
    24     判断当前手指在不在按钮上,如果在按钮上, 让按钮成为选中状态.
    25     1.获取当前手指所在的点
    26     CGPoint curP = [self getCurrentPoint:touches];
    27    
    28     2.判断当前手指所在的点在不在按钮上.
    29    UIButton *btn  = [self btnRectContainsPoint:curP];
    30    if (btn && btn.selected == NO) {如果按钮已经是选中状态,就不让它再添加到数组当中
    31         让按钮成为选中状态
    32         btn.selected = YES;
    33         把选中按钮添加到数组当中
    34         [self.selectBtn addObject:btn];
    35     }
    36 }
    37 
    38 手指移动时,按钮选中,连线到当前选中的按钮
    39 -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    40     判断当前手指在不在按钮上,如果在按钮上, 让按钮成为选中状态.
    41     1.获取当前手指所在的点
    42     CGPoint curP = [self getCurrentPoint:touches];
    43     2.判断当前手指所在的点在不在按钮上.
    44     UIButton *btn  = [self btnRectContainsPoint:curP];
    45     if (btn && btn.selected == NO) {//如果按钮已经是选中状态,就不让它再添加到数组当中
    46         让按钮成为选中状态
    47         btn.selected = YES;
    48         把选中按钮添加到数组当中
    49         [self.selectBtn addObject:btn];
    50         每次添加完毕后做一次重绘.
    51         [self setNeedsDisplay];
    52     }
    53 }
    54 
    55 - (void)drawRect:(CGRect)rect {
    56     创建路径.
    57     UIBezierPath *path = [UIBezierPath bezierPath];
    58     取出所有保存的选中按钮连线.
    59     for(int i = 0; i < self.selectBtn.count;i++){
    60         UIButton *btn = self.selectBtn[i];
    61         判断当前按钮是不是第一个,如果是第一个,把它的中心设置为路径的起点.
    62         if(i == 0){
    63             设置起点.
    64             [path moveToPoint:btn.center];
    65         }else{
    66             添加一根线到当前按钮的圆心.
    67             [path addLineToPoint:btn.center];
    68         }
    69     }
    70    
    71     设置颜色
    72     [[UIColor redColor] set];
    73     设置线宽
    74     [path setLineWidth:10];
    75     设置线的连接样式
    76     [path setLineJoinStyle:kCGLineJoinRound];
    77     绘制路径.
    78     [path stroke];
    79 }

    step4:业务逻辑

     1 @interface ClockView()
     2 
     3 /**
     4  *  选中的按钮数组.
     5  */
     6 @property(nonatomic,strong)NSMutableArray *selectBtn;
     7 
     8 /**
     9  *  当前手指移动的点
    10   * 记录当前手指的点,数组当中所有的点都绘制完毕后, 再添加一根线到当前手指所在的点.
    11  */
    12 @property(nonatomic,assign)CGPoint curP;
    13 
    14 @end
    15 
    16 手指松开时,按钮取消选中状态,清空所有的连线.
    17 -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    18 
    19     1.取消所有选中的按钮,查看选中按钮的顺序
    20     NSMutableString *str = [NSMutableString string];
    21     for (UIButton *btn in self.selectBtn) {
    22         [str appendFormat:@"%ld",btn.tag];
    23         btn.selected = NO;
    24     }
    25     2.清空所有的连线.
    26     [self.selectBtn removeAllObjects];
    27     3.重绘
    28     [self setNeedsDisplay];
    29     NSLog(@"选中按钮顺序为:%@",str);
    30 }
    31 
    32 - (void)drawRect:(CGRect)rect {
    33     如果数组当中没有元素,就不让它进行绘图.直接返回.
    34     if(self.selectBtn.count <= 0) return;
    35     创建路径.
    36     UIBezierPath *path = [UIBezierPath bezierPath];
    37     取出所有保存的选中按钮连线.
    38     for(int i = 0; i < self.selectBtn.count;i++){
    39         UIButton *btn = self.selectBtn[i];
    40        判断当前按钮是不是第一个,如果是第一个,把它的中心设置为路径的起点.
    41         if(i == 0){
    42            设置起点.
    43             [path moveToPoint:btn.center];
    44         }else{
    45            添加一根线到当前按钮的圆心.
    46             [path addLineToPoint:btn.center];
    47         }
    48     }
    49      连完先中的按钮后, 在选中按钮之后,添加一根线到当前手指所在的点.
    50     [path addLineToPoint:self.curP];
    51      设置颜色
    52     [[UIColor redColor] set];
    53        设置线宽
    54     [path setLineWidth:10];
    55      设置线的连接样式
    56     [path setLineJoinStyle:kCGLineJoinRound];
    57      绘制路径.
    58     [path stroke];
    59 }

    github下载地址:https://github.com/CrazyZhangSanFeng/shoushijiesuo

     

    转载于:https://www.cnblogs.com/teamblog/p/7469512.html

    展开全文
  • 本项目是一个仿支付宝手势密码部分的源码,项目在1280×720分辨率上显示有问题,在 854x480上没有问题,项目编码UTF-8默认编译版本4.4.2,实现思路: 1.要用一个类来表示这9个点中的第一个点。里面保留有当前点的...
    本项目是一个仿支付宝手势密码部分的源码,项目在1280×720分辨率上显示有问题,在 854x480上没有问题,项目编码UTF-8默认编译版本4.4.2,实现思路:
    1.要用一个类来表示这9个点中的第一个点。里面保留有当前点的上下左右的各个位置等属性;
    2.自定义GroupView,用来装9个点,9个点的显示是通过ImageView。复写onLayout这个方法,让点按需求排列;
    3.定义一个可以画线的View,复写onTouchEvent方法,在这个方法里面进行画直线的操作;

    4.判断用户手指当前的位置,取出当前的位置去与那9个点中的每个点的位置进行比较,如果用户点的位置在某一个点之内,那么当那个点置换背景图片。


    源码:

    http://download.csdn.net/detail/jdsjlzx/8431935

    展开全文
  • UserControl x:Class="LeakDetection.CombustibleGasMonitoring.Pages.FirstGradePage.Views.BorderCheck" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x=...

    定义一个控件

    <UserControl x:Class="LeakDetection.CombustibleGasMonitoring.Pages.FirstGradePage.Views.BorderCheck"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" Width="60" Height="60" 
                 d:DesignHeight="300" d:DesignWidth="300">
        <Border x:Name="Bd" Background="Gainsboro" BorderBrush="Purple" BorderThickness="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" CornerRadius="50">
            <Ellipse Fill="GreenYellow" Margin="0" Stroke="Tan" Width="50" Height="50" HorizontalAlignment="Center" VerticalAlignment="Center">
                <Ellipse.Effect>
                    <DropShadowEffect ShadowDepth="1.5" BlurRadius="3" Color="Purple" Direction="268"/>
                </Ellipse.Effect>
            </Ellipse>
        </Border>
    </UserControl>

    继承一下UserControl

    namespace LeakDetection.CombustibleGasMonitoring.Pages.FirstGradePage.Views
    {
        public partial class BorderCheck : UserControl
        {
            public Boolean IsChecked
            {
                get
                {
                    return (Boolean)GetValue(IsCheckedProperty);
                }
                set
                {
                    SetValue(IsCheckedProperty, value);
                }
            }
            public static DependencyProperty IsCheckedProperty = DependencyProperty.Register("IsChecked", typeof(Boolean), typeof(BorderCheck), new PropertyMetadata(new PropertyChangedCallback(OnIsCheckedPropertyChanged)));
            private static void OnIsCheckedPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
            {
                BorderCheck bc = sender as BorderCheck;
                if ((Boolean)e.NewValue == (Boolean)e.OldValue)
                {
                    return;
                }
                if (bc.IsChecked)
                {
                    bc.Bd.BorderThickness = new Thickness(10,10,10,10);
                }
                else
                {
                    bc.Bd.BorderThickness = new Thickness(0);
                }
            }
            public BorderCheck()
            {
                InitializeComponent();
    
                this.MouseEnter += delegate
                {
                    this.Cursor = Cursors.Hand;
                };
                this.MouseLeave += delegate
                {
                    this.Cursor = Cursors.Arrow;
                };
            }
        }
    }
    

    找个地方用它

    <Page x:Class="LeakDetection.CombustibleGasMonitoring.Pages.FirstGradePage.Views.FirstGradePageView"
          xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
          xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
          xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
          xmlns:local="clr-namespace:LeakDetection.CombustibleGasMonitoring.Pages.FirstGradePage.Views"
          xmlns:controls="http://firstfloorsoftware.com/ModernUI"
          mc:Ignorable="d" 
          d:DesignHeight="330" d:DesignWidth="300" x:Name="UserWindows"
          Title="FirstGradePageView">
    
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="1*"/>
                <RowDefinition Height="30"/>
                <RowDefinition Height="30"/>
            </Grid.RowDefinitions>
    
            <Grid x:Name="Bd" HorizontalAlignment="Center" VerticalAlignment="Center" Width="300" Height="330" Background="#FFECECEC">
                <Grid x:Name="gridCC" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="0.33*"/>
                        <ColumnDefinition Width="0.33*"/>
                        <ColumnDefinition Width="0.33*"/>
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="0.33*"/>
                        <RowDefinition Height="0.33*"/>
                        <RowDefinition Height="0.33*"/>
                    </Grid.RowDefinitions>
                    <local:BorderCheck Grid.Row="0" Grid.Column="0" Tag="1" HorizontalAlignment="Center" VerticalAlignment="Center" />
                    <local:BorderCheck Grid.Row="0" Grid.Column="1" Tag="2" HorizontalAlignment="Center" VerticalAlignment="Center" />
                    <local:BorderCheck Grid.Row="0" Grid.Column="2" Tag="3" HorizontalAlignment="Center" VerticalAlignment="Center" />
                    <local:BorderCheck Grid.Row="1" Grid.Column="0" Tag="4" HorizontalAlignment="Center" VerticalAlignment="Center" />
                    <local:BorderCheck Grid.Row="1" Grid.Column="1" Tag="5" HorizontalAlignment="Center" VerticalAlignment="Center" />
                    <local:BorderCheck Grid.Row="1" Grid.Column="2" Tag="6" HorizontalAlignment="Center" VerticalAlignment="Center" />
                    <local:BorderCheck Grid.Row="2" Grid.Column="0" Tag="7" HorizontalAlignment="Center" VerticalAlignment="Center" />
                    <local:BorderCheck Grid.Row="2" Grid.Column="1" Tag="8" HorizontalAlignment="Center" VerticalAlignment="Center" />
                    <local:BorderCheck Grid.Row="2" Grid.Column="2" Tag="9" HorizontalAlignment="Center" VerticalAlignment="Center" />
                </Grid>
            </Grid>
            <Grid Grid.Row="1">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="0.33*"/>
                    <ColumnDefinition Width="0.33*"/>
                    <ColumnDefinition Width="0.33*"/>
                </Grid.ColumnDefinitions>
                <TextBlock FontSize="16" Grid.Column="0" Text="密码:" HorizontalAlignment="Right"  VerticalAlignment="Center" Margin="0,0,0,0" />
                <PasswordBox Grid.Column="1" x:Name="password" FontSize="14" Grid.Row="3"   VerticalAlignment="Center"  Margin="10,2,10,2"/>
                <Button FontSize="14" Grid.Row="3" Content="登录" Grid.Column="2" VerticalAlignment="Center"  Margin="10,2,10,2" Click="Button_Click"/>
            </Grid>
            <Grid Grid.Row="2">
                <TextBlock x:Name="Info" FontSize="16" Grid.Column="0" Text="" HorizontalAlignment="Center"  VerticalAlignment="Center" Margin="0,0,0,0" />
            </Grid>
        </Grid>
    </Page>
    

    事件以及操作都在这里了

    namespace LeakDetection.CombustibleGasMonitoring.Pages.FirstGradePage.Views
    {
        public enum Grade
        {
            ONE = 0,
            TWO = 1
        }
        /// <summary>
        /// FirstGradePageView.xaml 的交互逻辑
        /// </summary>
        public partial class FirstGradePageView : Page
        {
            public FirstGradePageView()
            {
                InitializeComponent();
                this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
            }
            private Grade thisGrade = Grade.ONE;
            private EnumImpower thisEnumImpower = EnumImpower.Null;
            public void SetGrade(Grade grade, EnumImpower enumImpower)
            {
                thisGrade = grade;
                thisEnumImpower = enumImpower;
            }
    
            private static SolidColorBrush LineColorBrush = new SolidColorBrush(Color.FromRgb(22, 114, 186)) { Opacity = 0.8 };
    
            private String Password { get; set; }
    
            private void MainWindow_Loaded(object sender, RoutedEventArgs e)
            {
                this.Bd.MouseLeftButtonDown += new MouseButtonEventHandler(Bd_MouseLeftButtonDown);
                this.Bd.MouseMove += new MouseEventHandler(Bd_MouseMove);
                this.Bd.MouseLeftButtonUp += new MouseButtonEventHandler(Bd_MouseLeftButtonUp);
                this.Bd.MouseLeave += new MouseEventHandler(Bd_MouseLeave);
            }
    
            private void Bd_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {
                if (e.Source == null || e.Source.GetType().Name != "BorderCheck")
                {
                    Password = String.Empty;
                    return;
                }
                Point startPoint = GetPointByKey((e.Source as BorderCheck).Tag.ToString());
                Line line = new Line();
                line.Stroke = LineColorBrush;
                line.SnapsToDevicePixels = true;
                line.StrokeThickness = 2;
                line.X1 = startPoint.X;
                line.Y1 = startPoint.Y;
                line.X2 = startPoint.X;
                line.Y2 = startPoint.Y;
                this.Bd.Children.Add(line);
                (e.Source as BorderCheck).IsChecked = true;
                Password = (e.Source as BorderCheck).Tag.ToString();
            }
            private void Bd_MouseMove(object sender, MouseEventArgs e)
            {
                if (e.LeftButton != MouseButtonState.Pressed)
                {
                    return;
                }
                try
                {
                    Point tmpPoint = e.GetPosition(Bd);
                    int i = this.Bd.Children.Count;
                    var asLine = this.Bd.Children[this.Bd.Children.Count - 1] as Line;
                    if (asLine != null)
                    {
                        (this.Bd.Children[this.Bd.Children.Count - 1] as Line).X2 = tmpPoint.X;
                        (this.Bd.Children[this.Bd.Children.Count - 1] as Line).Y2 = tmpPoint.Y;
    
                        if ((e.Source != null && e.Source.GetType().Name != "BorderCheck") || (e.Source as BorderCheck).IsChecked)
                        {
                            return;
                        }
                (e.Source as BorderCheck).IsChecked = true;
                        Password += (e.Source as BorderCheck).Tag.ToString();
    
                        //修改原直线的终点坐标
                        Point bdPoint = GetPointByKey((e.Source as BorderCheck).Tag.ToString());
                        (this.Bd.Children[this.Bd.Children.Count - 1] as Line).X2 = bdPoint.X;
                        (this.Bd.Children[this.Bd.Children.Count - 1] as Line).Y2 = bdPoint.Y;
    
                        //重新画一条直线
                        Line line = new Line();
                        line.Stroke = LineColorBrush;
                        line.SnapsToDevicePixels = true;
                        line.StrokeThickness = 2;
                        line.X1 = bdPoint.X;
                        line.Y1 = bdPoint.Y;
                        line.X2 = tmpPoint.X;
                        line.Y2 = tmpPoint.Y;
                        this.Bd.Children.Add(line);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
            }
            private void Bd_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
            {
                if (!String.IsNullOrEmpty(Password))
                {
                    Login(Password);
                    ResetLine();
                }
            }
            private void Bd_MouseLeave(object sender, MouseEventArgs e)
            {
                ResetLine();
            }
            private Point GetPointByKey(String key)
            {
                Point point = new Point();
                Double oneWidth = this.gridCC.ActualWidth / this.gridCC.RowDefinitions.Count; //每个单元格的宽度
                Double oneHeight = this.gridCC.ActualHeight / this.gridCC.ColumnDefinitions.Count; //每个单元格的高度
                switch (key)
                {
                    case "1":
                        point.X = oneWidth * 0 + oneWidth / 2;
                        point.Y = oneHeight * 0 + oneHeight / 2;
                        break;
                    case "2":
                        point.X = oneWidth * 1 + oneWidth / 2;
                        point.Y = oneHeight * 0 + oneHeight / 2;
                        break;
                    case "3":
                        point.X = oneWidth * 2 + oneWidth / 2;
                        point.Y = oneHeight * 0 + oneHeight / 2;
                        break;
                    case "4":
                        point.X = oneWidth * 0 + oneWidth / 2;
                        point.Y = oneHeight * 1 + oneHeight / 2;
                        break;
                    case "5":
                        point.X = oneWidth * 1 + oneWidth / 2;
                        point.Y = oneHeight * 1 + oneHeight / 2;
                        break;
                    case "6":
                        point.X = oneWidth * 2 + oneWidth / 2;
                        point.Y = oneHeight * 1 + oneHeight / 2;
                        break;
                    case "7":
                        point.X = oneWidth * 0 + oneWidth / 2;
                        point.Y = oneHeight * 2 + oneHeight / 2;
                        break;
                    case "8":
                        point.X = oneWidth * 1 + oneWidth / 2;
                        point.Y = oneHeight * 2 + oneHeight / 2;
                        break;
                    case "9":
                        point.X = oneWidth * 2 + oneWidth / 2;
                        point.Y = oneHeight * 2 + oneHeight / 2;
                        break;
                    default:
                        break;
                }
                return point;
            }
    
            private void ResetLine()
            {
                foreach (UIElement element in this.gridCC.Children)
                {
                    if (element.GetType().Name == "BorderCheck")
                    {
                        (element as BorderCheck).IsChecked = false;
                    }
                }
                for (int i = this.Bd.Children.Count - 1; i >= 0; i--)
                {
                    if (this.Bd.Children[i].GetType().Name != "Grid")
                    {
                        this.Bd.Children.RemoveAt(i);
                    }
                }
            }
            private void Login(string passWord)
            {
                bool IsLogin = false;
                if(passWord.Equals("123"))
                {
                    IsLogin = true;
                }
                else
                {
    
                }
              
                if (IsLogin==true)
                {
         
                    Window win = (Window)this.Parent;
                    win.Close();
                }
            }
            private void Button_Click(object sender, RoutedEventArgs e)
            {
                Login(password.Password);
            }
        }
    }
    

    测试源码下载

    https://download.csdn.net/download/g313105910/12879206

    展开全文
  • 本项目是一个仿支付宝手势密码部分的源码,项目在1280×720分辨率上显示有问题,在 854x480上没有问题,项目编码UTF-8默认编译版本4.4.2
    本项目是一个仿支付宝手势密码部分的源码,项目在1280×720分辨率上显示有问题,在 854x480上没有问题,项目编码UTF-8默认编译版本4.4.2,实现思路:
    1.要用一个类来表示这9个点中的第一个点。里面保留有当前点的上下左右的各个位置等属性;
    2.自定义GroupView,用来装9个点,9个点的显示是通过ImageView。复写onLayout这个方法,让点按需求排列;
    3.定义一个可以画线的View,复写onTouchEvent方法,在这个方法里面进行画直线的操作;

    4.判断用户手指当前的位置,取出当前的位置去与那9个点中的每个点的位置进行比较,如果用户点的位置在某一个点之内,那么当那个点置换背景图片。

    下载地址:http://www.devstore.cn/code/info/159.html

    运行截图:

      

    展开全文
  • positionX = initialPositionX + moveX; positionY = initialPositionY + moveY; transformElement(); } else if (mode === 'pinch' ) { evt.preventDefault(); distance = getDistance(touches); ...
  • 浏览手势 浏览大图时可使用常势操用手.如缩放图片等.(PhotoView) 超大图 图片区块加载.避免OOM(SubsamplingScaleImageView) Video 支持Video加载 (SimpleExoPlayer) 拖拽关闭 对大图进行上/下滑操作退出浏览. ...
  • 人机智能交互技术示例-Leap Motion通过ROS控制机械手Gazebo仿真 1. Leap配置2. 机械手配置3. 综合实验--123手势--  1. Leap配置在官网下载Leap_Motion_SDK_Linux...├── Leap-2.3.1+31549-x64.deb ├── Leap-2.3.1
  • 通过Scroller不断更新滚动数据后,还是要调用View.scrollTo(x,y)或View.scrollBy(x,y)来控制View的内容滚动。 其次,Scroller或者OverScroller作用和使用方式基本是一样的,但是OverScroller包含了响应方法来向用户...
  • Step1: dependencies { compile 'com.cxz:swipeback:1.0.1' } Step2: ... * Created by wangx on 2019/... * 支持边界滑动关闭手势的BaseActivity */ public abstract class BaseSwipeBackActivity extends Base...
  • 先分析一下功能的主要技术点,右滑即手势判断,当滑到一直距离时才执行返回,并且手指按下的位置是在屏幕的最左边(这个也是有一定范围的), 这些可以实现onTouchEvent来实现。 接着就是返回时,有滑动效果,很...
  • 开源::hot_springs:分享GitHub优秀的开源项目和主流开发使用的网站,解决问题方案收集以及学习网站或资料,涵盖了iOS,macOS X,Blockchain,Flutter,Weex,H5,游戏,C ++,脚本等多方面的内容,其中iOS大致包涵...
  • 仿QQ(老版本的QQ)侧滑菜单,通过手势自动联动滑动 EditText获取到焦点但不显示光标的解决方法 Android Studio 4.1 代码无错误提示(警告、报红等) 环形进度条UI库 第三方相册访问库 安装包立减1M--微信Android...
  • RenRenSlideMenuDemo.zip

    2014-08-20 11:43:04
    仿人人网滑动侧边栏,抽屉的方式,源代码直接上package com.example.renrenslidemenudemo; import android.app.Activity; import android.content.Context; import android.os.AsyncTask; import android.os.Bundle...
  • │ │ XCX-scaffold-master.zip │ │ 事项助手.zip │ │ 二维码生成器.zip │ │ 倒班日历.zip │ │ 周公解梦.zip │ │ 图表.zip │ │ 备忘录.zip │ │ 手势解锁.zip │ │ 搜索框.zip │ │ 查拼音....
  • 通过onTouchEvent方法来监听手势及获取当前坐标即可。难点在于这是一个弧形轨迹,我们怎么通过当前坐标来获取角度,再根据角度获取相对应的进度。需要注意的是,在我们拖动小图标时,我们需要定一个特定的接收事件的...
  • IDoodleSelectableItem item = new DoodleText(mDoodleView, "hello", 20 * mDoodleView.getUnitSize(), new DoodleColor(Color.RED), x, y); mDoodleView.addItem(item); } else if (mDoodleView.getPen() == ...
  • gulp-wxa-copy-npm - 微信小程序 gulp 插件,解决 npm 包管理和 babel-runtime weact - 用 JSX 快速开发小程序 socket.io-mp-client - 微信小程序 socket.io 客户端 wxa - 方便的小程序开发框架 px2rpx - Px 转 ...
  • iPhone开发秘籍(第2版)--源代码

    热门讨论 2012-12-11 13:51:22
    7.2.2 添加2.x支持 206 7.2.3 添加3.1支持 206 7.2.4 拾取视频 206 7.3 秘诀:选择和定制相册中的图像 208 7.4 秘诀:拍摄照片并将照片写到相册上 210 7.5 秘诀:将图片保存到Documents文件夹 212 7.6 秘诀:...
  • iPhone开发秘籍(第2版)--详细书签版

    热门讨论 2012-12-11 13:42:25
    7.2.2 添加2.x支持 206 7.2.3 添加3.1支持 206 7.2.4 拾取视频 206 7.3 秘诀:选择和定制相册中的图像 208 7.4 秘诀:拍摄照片并将照片写到相册上 210 7.5 秘诀:将图片保存到Documents文件夹 212 7.6 秘诀:...
  • HQChart使用教程48-如何自定义X轴刻度 HQChart使用教程49-指标配置项说明 HQChart使用教程50-Y轴自定义刻度设置说明 HQChart使用教程51-指标切换按钮事件说明-h5版本 HQChart使用教程52-自定义手机端K线...

空空如也

空空如也

1 2
收藏数 31
精华内容 12
关键字:

仿x手势