Visual Layer Overview(5)Hit Testing in the Visual Layer

翻译 2006年06月13日 00:49:00
Hit Testing in the Visual Layer
 
这部分介绍了Windows Presentation Foundation中visual layer.使用VisualTreeHelper class来完成Hit Test的功能。这意味着你可以确定一个geometry 或者point是否落到一个visual object的边界之内,使你实现UI的行为,例如drag and drop。
 
1. Hit Testing Scenarios
UIElement class提供了InputHitTest方法,使你能够使用给定的元素的坐标值来做Hit Test。在大多数的情况下,InputHitTest方法提供了元素所需的Hit Test功能,但是,在visual layer的Hit Test时,还有一些情形需要你来实现:
     与non-UIElement objects的Hit Test。例如:DrawingVisual objects
     与geometry of objects的Hit Test:需要实现与几何体而不是坐标的Hit Test
     与多个 objects的Hit Test
     忽略UIElement hit testing 策略
 
2. Hit Testing Support
VisualTreeHelper class的HitTest的目的就是确定一个几何体或者点的坐标是否在一个给定的对象的边界内,例如control 或者graphic element。例如:可以使用Hit Test来确定鼠标点击的矩形边界是否在一个圆形对象之内。还可以override默认的Hit Test的实现来执行自定义的Hit Test计算。
下图显示了一个非矩形对象和它的矩形边界:
 
3. Hit Testing and Z-Order
Windows Presentation Foundation visual layer在所有的z-order levels支持对象的Hit Test。
在下图中,圆形对象在矩形和三角对象的上面。如果只对最上面的对象的碰撞感兴趣,可以设定Hit Test在最上面的对象停止,虽然制定的坐标包含在下面的两层对象之内。
 如果想不管z-order,枚举坐标所有的对象包含的所有的对象,可以设定返回所有的对象
 
4. Event Handling for Hit Testing
一个捕捉碰撞事件的通用的技术就是在感兴趣的所有对象上覆盖一个透明的轻量的UIElement 对象。透明的UIElement 对象虽然是不可见的,但是可以捕获事件,例如:鼠标点击。
下图显示了透明的UIElement 对象和感兴趣的其他对象的关系
 
5. Using Default Hit Testing
可以使用HitTest方法指定一个visual object和一个点坐标来确定一个点是否在一个可视化的对象之内
下面的代码显示了怎么给设UIElement定鼠标事件处理
C#
// Respond to the left mouse button down event by initiating the hit test.
 
public void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    // Retrieve the coordinate of the mouse position.
    Point pt = e.GetPosition((UIElement)sender);
 
    // Perform the hit test against a given portion of the visual object tree.
    HitTestResult result = VisualTreeHelper.HitTest(myCanvas, pt);
 
    if (result != null)
    {
        // Perform action on hit visual object.
    }
}
 
6. Using a Hit Test Result Callback
    VisualTreeHelper.HitTest(myCanvas, null,
        new HitTestResultCallback(MyHitTestResult),
        new PointHitTestParameters(pt));
 
7. Using a Hit Test Filter Callback
 VisualTreeHelper.HitTest(myCanvas,
                      new HitTestFilterCallback(MyHitTestFilter),
                      new HitTestResultCallback(MyHitTestResult),
                      new PointHitTestParameters(pt));
 
8. Overriding Default Hit Testing
可以通过override HitTestCore 方法override一个visual object的默认的Hit Test行为,这意味着当你调用HitTest 方法时,你的重载的HitTestCore 方法将被调用
// Override default hit test support in visual object.
protected override HitTestResult HitTestCore(PointHitTestParameters hitTestParameters)
{
    Point pt = hitTestParameters.HitPoint;
 
    // Perform custom actions during the hit test processing.
 
    // Return hit on bounding rectangle of visual object.
    return new PointHitTestResult(this, pt);
}

caffe SSD 添加新层时出现的问题

caffe代码,在迭代10000次的时候需要进行test,但是test的时候遇见问题。 I0512 14:40:29.685868 15163 upgrade_proto.cpp:77] Attemp...
  • Soleilhao
  • Soleilhao
  • 2017年05月12日 14:50
  • 1933

深度学习笔记(2):caffe 加新层 Attention LSTM layer

深度学习笔记(2):caffe 加新层 Attention LSTM layer
  • u013110060
  • u013110060
  • 2017年03月09日 16:15
  • 3140

【Unity问题】如果OrderInLayer无法使用代码改变(如何用代码改变OrderInLayer)

如果OrderInLayer无法使用代码改变,应该怎么办 通过预制体就可以达到 1.新建预制体物体 通过新建空物体GameObject --- Create Empty 添加相应的组件UG...
  • BuladeMian
  • BuladeMian
  • 2016年12月30日 19:07
  • 1914

multi_layer_AHB_overview.pdf

  • 2009年10月10日 08:56
  • 125KB
  • 下载

Presentation Layer Testing Framework

HtmlUnit Selenium HtmlUnit The general pattern with HtmlUnit is to get a page, find the eleme...
  • zaidaleelina
  • zaidaleelina
  • 2012年02月14日 18:00
  • 226

ET 在low layer testing中的应用

以往的ET,更多是在ST的执行过程中开展的,往往基于基于UI或用户可操作的命令行接口。那么是不是只限于此呢?对于low layer testing 是否能做ET?...
  • jdhellfire
  • jdhellfire
  • 2017年02月03日 21:59
  • 157

Google Maps Layer in ArcGIS JS API

  • 2010年11月05日 22:10
  • 11KB
  • 下载

Link-Layer Cooperative Communication in Vehicular Networks 无水印pdf

  • 2017年09月27日 18:25
  • 3.03MB
  • 下载

Multicast with Network Coding in Application-Layer Overlay Networks

  • 2008年07月08日 17:21
  • 2.23MB
  • 下载

Cross-Layer Design for Combining Cooperative Diversity with Truncated ARQ in Ad-hoc Wireless Networks

  • 2010年11月23日 20:24
  • 266KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Visual Layer Overview(5)Hit Testing in the Visual Layer
举报原因:
原因补充:

(最多只允许输入30个字)