大佬教程收集整理的这篇文章主要介绍了WP7:在Silverlight处理时抑制XNA触摸输入?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
应该适用于矩形元素移动,改变大小或折叠/扩展.
public class ControlTouchTracker { private List<FrameworkElement> controls = new List<FrameworkElement>(); private Dictionary<FrameworkElement,ControlRegion> controlBounds = new Dictionary<FrameworkElement,ControlRegion>(); public ControlTouchTracker(FrameworkElement rootElement) { rootElement.Layoutupdated += this.OnLayoutupdated; } public void RegisterControl(FrameworkElement control) { controls.Add(control); } public void RemoveControl(FrameworkElement control) { controls.Remove(control); controlBounds.Remove(control); } private void OnLayoutupdated(object sender,EventArgs E) { foreach (Control control in this.controls) { this.refreshControlBounds(control); } } private void refreshControlBounds(FrameworkElement control) { if (this.ControlIsVisible(control)) { try { GeneralTransform controlTransform = control.TransformToVisual(Application.Current.RootVisual); Point offset = controlTransform.Transform(new Point(0,0)); this.controlBounds[control] = new ControlRegion { Left = (float)offset.X,Right = (float)(offset.X + control.ActualWidth),Top = (float)offset.Y,Bottom = (float)(offset.Y + control.ActualHeight) }; } catch (Argumentexception) { } } else { if (this.controlBounds.ContainsKey(control)) { this.controlBounds.Remove(control); } } } private bool ControlIsVisible(FrameworkElement control) { // End case if (control == null) { return true; } if (control.Visibility == Visibility.Collapsed) { return false; } return this.ControlIsVisible(control.Parent as FrameworkElement); } public bool TouchesControl(Vector2 touchPosition) { foreach (ControlRegion region in this.controlBounds.Values) { if (touchPosition.X >= region.Left && touchPosition.X <= region.Right && touchPosition.Y >= region.Top && touchPosition.Y <= region.bottom) { return true; } } return false; } public class ControlRegion { public float Left { get; set; } public float Right { get; set; } public float Top { get; set; } public float Bottom { get; set; } } }
(编辑)更新了使用父元素更改可见性的示例.
以上是大佬教程为你收集整理的WP7:在Silverlight处理时抑制XNA触摸输入?全部内容,希望文章能够帮你解决WP7:在Silverlight处理时抑制XNA触摸输入?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。