zoukankan      html  css  js  c++  java
  • windows phone (25) Canvas元素B

     ZIndex

    这也是一个附加属性,表示canvas的children集合内的子元素的显示顺序,在canvas中的元素默认情况下是后面的子元素覆盖前面的子元素,所以我们可以使用此附加属性更改显示属性,ZIndex其实是一个虚拟的Z轴,正方向延伸出屏幕的,ZIndex的数值越大,表示在越向外,越小越容易被覆盖,所以如果想设置某个子元素显示,可以设置ZIndex较大值,ZIndex默认值为0;【作者:神舟龍

    触摸处理

    下面演示的示例是通过改变RenderTransform属性上的变形对象,从而是元素可以在屏幕上移动,也可以通过在代码中设置left和top附加属性移动Canvas中的元素;

    首先在Canva中绘制三个Ellipse元素,并设置演示为红色,绿色和蓝色,另外当移动哪一个ellipse对象的时候,它的ZIndex就会在最上层,也就是设置移动的对象ZIndex值比其他两个大

    xaml部分代码:

     <!--ContentPanel - 在此处放置其他内容-->
            <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
                <Canvas Name="cav">
                    <Ellipse Canvas.Left="50" Canvas.Top="50" Width="100" Height="100" Fill="Red"></Ellipse>
                    <Ellipse Canvas.Left="150" Canvas.Top="150" Width="100" Height="100" Fill="Green"></Ellipse>
                    <Ellipse Canvas.Left="250" Canvas.Top="250" Width="100" Height="100" Fill="Blue"></Ellipse>
                </Canvas>
            </Grid>

    xaml代码比较简单,两个附加属性设置相对位置,宽和高相等做圆,填充三个不同的颜色;在这里我们重写OnManipulationStarted和OnManipulationDelta方法,在OnManipulationStarted方法中 e.ManipulationContainer = cav;

    部分隐藏代码

     protected override void OnManipulationStarted(ManipulationStartedEventArgs e)
            {
                //获得定义坐标的容器
                e.ManipulationContainer = cav;
                base.OnManipulationStarted(e);
            }
           
            int i = 0;
            protected override void OnManipulationDelta(ManipulationDeltaEventArgs e)
            {
               
                //获得引发事件的元素
                UIElement element = e.OriginalSource as UIElement;
                //获得修改
                Point translation = e.DeltaManipulation.Translation;
               
                //设置新位置
                Canvas.SetLeft(element,Canvas.GetLeft(element)+translation.X);
                Canvas.SetTop(element, Canvas.GetTop(element) + translation.Y);
                Canvas.SetZIndex(element, i++);

                e.Handled = true;
                base.OnManipulationDelta(e);
            }

     无任何移动下的效果

     

    上面中我们看到一个新方法就是Canvas.GetLeft(element),这个是获得子元素在canvas中的left值,同理Canvas.GetTop(element),还有可以看到Canvas.SetZIndex(element, i++);把移动的元素放在最外层

    看看移动的效果吧

     

     另一张截图:

     

     五一假期Over了,开始工作吧

    作者:神舟龙
        
     

    新建的wp開發者群:42182428 

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    HUST 1372 marshmallow
    HUST 1371 Emergency relief
    CodeForces 629D Babaei and Birthday Cake
    CodeForces 629C Famil Door and Brackets
    ZOJ 3872 Beauty of Array
    ZOJ 3870 Team Formation
    HDU 5631 Rikka with Graph
    HDU 5630 Rikka with Chess
    CodeForces 626D Jerry's Protest
    【POJ 1964】 City Game
  • 原文地址:https://www.cnblogs.com/shenzhoulong/p/2478131.html
Copyright © 2011-2022 走看看