zoukankan      html  css  js  c++  java
  • WPF命中测试示例(二)——几何区域命中测试

    image 接续上次的命中测试,这次来做几何区域测试示例。

    示例

    首先新建一个WPF项目,在主界面中拖入一个按钮控件,并修改代码中的以下高亮位置:

    image

    当前设计视图界面如下:

    image

    接下来,转到窗体的“Window_Loaded”事件处理函数,编写函数代码:

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
    Random r = new Random();
    for (int i = 0; i < 800; i++)
    {
    var o = new Ellipse();
    o.HorizontalAlignment = HorizontalAlignment.Left;
    o.VerticalAlignment = VerticalAlignment.Top;
    o.Margin=new Thickness(){ Left = r.Next((int)this.Width),Top = r.Next((int)this.Height)};
    o.Height = o.Width = r.Next(10);
    o.Fill = new SolidColorBrush(new Color() { A = (byte)r.Next(255), R = (byte)r.Next(255), G = (byte)r.Next(255), B = (byte)r.Next(255) });
    root.Children.Add(o);
    }
    }

    代码的功能是在界面中随机分布800个不同色彩的小圆点,我们来编译运行看看效果:

    SNAGHTML11caca8c

    现在,我们需要在按钮点击时,将中间200×150椭圆区域内的小圆点变成黑色。

    编写按钮点击事件处理函数如下:

    private void button1_Click(object sender, RoutedEventArgs e)
    {
    VisualTreeHelper.HitTest(root, null, f =>
    {
    var o = f.VisualHit as Ellipse;
    if (o != null) o.Fill = new SolidColorBrush(Color.FromArgb(255, 0, 0, 0));
    return HitTestResultBehavior.Continue;
    }, new GeometryHitTestParameters(new EllipseGeometry(new Point(this.Width / 2, this.Height / 2), 200, 150)));
    }

    这里的HitTestParameters就采用了GeometryHitTestParameters,传入一个几何图形作为命中测试区域。

    编译运行效果:

    image 

    下载

    源代码:http://www.uushare.com/user/icesee/file/3024856

    本文的XPS版本:http://www.uushare.com/user/icesee/file/3024874

  • 相关阅读:
    乘积最大(动规)
    电话圈(floyd)
    孪生蜘蛛
    解题报告
    最大上升子序列和
    怪盗基德的滑翔翼(还是最长x序列)
    最长公共子序列
    合唱队形(动规,最长不下降子序列)
    课堂笔记 4.6
    2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest I Lottery
  • 原文地址:https://www.cnblogs.com/SkyD/p/1737106.html
Copyright © 2011-2022 走看看