我想要做的是知道用戶是否單擊了我的遊戲杆的紅色按鈕。 (爲此目的,我繪製了真正的操縱桿圖形,以保持我們的繪圖隱私) 如何在WPF中使用HitTest XAML 3D對象
此操縱桿是XAML 3D。
紅色按鈕是一個GeometryModel3D對象,其中x:名稱爲「Geo_Btn_CSS_TAKE」。當我點擊操縱桿時,我可以做一個HitTest,他給我所有的GeometryModel3D對象,但是我不能訪問到x:Name,所以我不知道巫婆是不是一個好的...
這是我做我的HitTest:
private void OnTouchMouseDown(EventArgs e)
{
Viewport3D viewport3D = WtoHitTest((Grid)Parent, e) as Viewport3D; // My own HitTest works well, I get my viewport3D
Point mouseposition = WtoHelper.GetPositionFromEvent(e, viewport3D); // Get the point if it's a mouse event or touch event
Point3D testpoint3D = new Point3D(mouseposition.X, mouseposition.Y, 0);
Vector3D testdirection = new Vector3D(mouseposition.X, mouseposition.Y, 10);
PointHitTestParameters pointparams = new PointHitTestParameters(mouseposition);
RayHitTestParameters rayparams = new RayHitTestParameters(testpoint3D, testdirection);
VisualTreeHelper.HitTest(viewport3D, null, HTResult, pointparams);
}
public HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult)
{
RayHitTestResult rayResult = rawresult as RayHitTestResult;
if (rayResult != null)
{
RayMeshGeometry3DHitTestResult rayMeshResult = rayResult as RayMeshGeometry3DHitTestResult;
if (rayMeshResult != null)
{
GeometryModel3D hitgeo = rayMeshResult.ModelHit as GeometryModel3D;
**// HERE I NEED TO KNOW WHAT IS MY GEOMETRYMODEL3D'S X:NAME**
// ANY IDEA???
}
}
return HitTestResultBehavior.Continue;
}
還有什麼我知道:
- 我的3D對象沒有,我可以綁定到 的位置(X,Y)
- 在的Viewport3D
- 我無法訪問於x我不能插入非3D元件:名稱的3D對象
- 3D對象或不FrameworkElement的或Visual的。他們是Media3D
我這樣做的方式,我只需要知道x:name來完成我的實現...如果有人有一個提示或其他方式去,讓我知道。
謝謝
編輯:這是我的3D對象的屬性:
「rayparams」甚至在哪裏使用? – AgentFire