簡體   English   中英

使用Helix工具包創建可點擊對象

[英]Create clickable objects with helix toolkit

我在Helix Toolkit上找到了一個示例,該示例稱為ScatterPlot,與我真正需要的確實很接近。 但是我找不到關於如何向創建的對象(在本例中為球形)添加onclick事件偵聽器的任何信息。 這將球體添加到“游樂場”。

scatterMeshBuilder.AddSphere(Points[i], SphereSize, 4, 4);

基本目標是為每個球體添加onclick事件偵聽器,並且當用戶選擇一種顏色並單擊這些球體之一時,它將變為所選顏色。 可以將onclick偵聽器(或與其等效的東西)添加到球體中。

一年后……也許有人會覺得有用。

對我有用的解決方案是圍繞擴展UIElement3D類,它具有許多可以重寫的標准事件。 例如MouseEnter,MouseClick等。

using System.Windows; 
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Media3D;
using System.Windows.Controls.Primitives;
using System.Windows.Controls;

public class InteractivePoint : UIElement3D   
{
    public InteractivePoint(Point3D center, Material material, double sphereSize = 0.07)
    {
       MeshBuilder builder  = new MeshBuilder();

       builder.AddSphere( center, sphereSize , 4, 4 );
       GeometryModel3D model = new GeometryModel3D( builder.ToMesh(), material );
        Visual3DModel = model;
    }

    protected override void OnMouseEnter( MouseEventArgs event )
    {
        base.OnMouseEnter( event );

        GeometryModel3D point = Visual3DModel as GeometryModel3D;

        point.Material = Materials.Red; //change mat to red on mouse enter
        Event.Handled = true;
    }

    protected override void OnMouseLeave( MouseEventArgs event )
    {
        base.OnMouseEnter( event );

        GeometryModel3D point = Visual3DModel as GeometryModel3D;

        point.Material = Materials.Blue; //change mat to blue on mouse leave
        Event.Handled = true;
    }


}

將它們添加到游樂場

Point3D[,] dataPoints = new Point3D[10,10]; // i will assume this has already been populated.
ContainerUIElement3D container;
Material defaultMaterial = Materaials.Blue;
for (int x = 0;x < 10; x++)
{
    for(int y = 0; y < 10; y++)
    {
        Point3D position = dataPoints [x, y];
        InteractivePoint  interactivePoint = new InteractivePoint( position, defaultMaterial );
        container.Children.Add( interactivePoint );
    }
}

最后,將容器作為子項添加到ModelVisual3D對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM