zoukankan      html  css  js  c++  java
  • UWP ManipulationStarted 移动图片或控件不要滑出父容器的判断

    假设自定义一个用户控件用以在父容器Grid里拖动/移动:

    <UserControl
        x:Class="App6.Pic"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:App6"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"  ManipulationMode="All"
        ManipulationStarted="UserControl_ManipulationStarted" ManipulationDelta="UserControl_ManipulationDelta" 
        d:DesignHeight="300" RenderTransformOrigin="0.5,0.5"
        d:DesignWidth="400">
        <UserControl.RenderTransform>
            <TranslateTransform x:Name="t" />
        </UserControl.RenderTransform>
        <Grid Background="AliceBlue">
           <TextBlock Name="txt" Text="" />
        </Grid>
    </UserControl>
    

      

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Runtime.InteropServices.WindowsRuntime;
    using Windows.Foundation;
    using Windows.Foundation.Collections;
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Controls.Primitives;
    using Windows.UI.Xaml.Data;
    using Windows.UI.Xaml.Input;
    using Windows.UI.Xaml.Media;
    using Windows.UI.Xaml.Navigation;
    
    // The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236
    
    namespace App6
    {
        public sealed partial class Pic : UserControl
        {
            public Pic()
            {
                this.InitializeComponent();
                
            }
    
            private void UserControl_ManipulationStarted(object sender, ManipulationStartedRoutedEventArgs e)
            {
               
    
            }
    
            private void UserControl_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
            {
    
                this.t.X += e.Delta.Translation.X;
                this.t.Y += e.Delta.Translation.Y;
                txt.Text = "" + (Parent as Grid).ActualWidth + ",  " + t.X + this.Margin.Left +  this.ActualWidth / 2;
                //判断核设置移动范围限制在父容器内
                if ((Parent as Grid).ActualWidth < this.Margin.Left+ t.X + this.Width)//to right
                {
                    this.t.X = (Parent as Grid).ActualWidth - (this.Margin.Left + this.Width);
                }
    
                if (0 >this.Margin.Left + t.X )//to left
                {
                    this.t.X =  - this.Margin.Left ;
                }
    
                if (0 > this.Margin.Top + t.Y)//to top
                {
                    this.t.Y= -this.Margin.Top;
                }
    
                if ((Parent as Grid).ActualHeight < this.Margin.Top + t.Y + this.Height)//to bottom
                {
                    this.t.Y = (Parent as Grid).ActualHeight - (this.Margin.Top + this.Height);
                }
    
    
            }
    
    
    
        }
    }
    

      

    fffffffffffffffff
    test red font.
  • 相关阅读:
    100以内整数四则运算
    软件工程基础
    使用python分析微信好友
    数据库实践
    爬虫
    Python编程预测比赛成绩
    自己的第一个网页
    科学计算与可视化
    对小学生四则运算用界面呈现
    在使用memory_profiler检测python代码运行时内存出现解码错误
  • 原文地址:https://www.cnblogs.com/wgscd/p/14549247.html
Copyright © 2011-2022 走看看