使用 helix 工具包创建可点击的对象

2024-03-13

我在 Helix Toolkit 上找到了一个例子,它被称为 ScatterPlot,它非常接近我真正需要的。但我找不到任何关于如何将 onclick 事件侦听器添加到创建的对象(在本例中为球体)的信息。这会将球体添加到“游乐场”。

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

基本目标是为每个球体添加一个 onclick 事件侦听器,当用户选择一种颜色并单击其中一个球体时,它将更改为所选颜色。可以将 onclick 侦听器(或与之相同的东西)添加到球体中。


一年后......也许有人会发现这很有用。

对我有用的解决方案围绕扩展UIElement3D https://msdn.microsoft.com/en-us/library/system.windows.uielement3d(v=vs.110).aspx类,它有一堆您可以覆盖的标准事件。例如鼠标输入、鼠标单击等。 来源如下。

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 对象。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 helix 工具包创建可点击的对象 的相关文章

  • is_integral 与 is_integer:其中之一是多余的吗?

    是积分 http en cppreference com w cpp types is integral and 是整数 http en cppreference com w cpp types numeric limits is inte
  • 将 void *user_data 转换为对象

    我该如何投射void something到标准 C 中的对象 具体来说我想投void userdata to std map
  • 增量决策树 C++ 实现

    有谁知道决策树分类器的增量实现吗 这样 当您将新实例添加到训练集中时 它可以根据现有决策树分类器以低计算量并尽可能快地生成最佳决策树分类器 换句话说 我有一个最优决策树分类器集A 其中命名为T 1 现在我想添加实例X to set A并找到
  • boost::asio::io_service 是否保留处理程序的顺序?

    Does boost asio io service http www boost org doc libs release doc html boost asio reference io service html保证处理程序的调用顺序与
  • 我要恢复我的记忆!我怎样才能真正处理一个控件?

    我正在制作一个应用程序 它创建大量的窗口控件 按钮和标签等 它们都是通过函数动态生成的 我遇到的问题是 当我删除控件并处置它们时 它们不会从内存中删除 void loadALoadOfStuff while tabControlToClea
  • 函数指针上的未知类型 F TYPE

    include
  • 如何从Web JavaScript应用程序获取桌面C#程序中的变量

    我遇到一个问题 有两个应用程序 一种是 C 中的桌面应用程序 另一种是 javascript 中的 Web 应用程序 运行桌面应用程序中的一些变量或信息需要传输到Web应用程序 有谁知道如何解决这个问题 有人愿意提供更多细节来解决这个问题吗
  • 修改正在运行的可执行文件的资源内容

    All 我将应用程序设置存储在资源中 当我的程序首次加载时 我使用 WinAPI 读取指定的资源 然后我解析检索到的字节数据 这对我来说完美无缺 现在假设用户更改了我的应用程序中的设置 他 她检查复选框控件 我想将更新的设置保存到我的资源中
  • Microsoft.Windows.Design.dll

    我下载了库 DynamicDataDisplay 其源代码 某些项目需要 Microsoft Windows Design dll 文件 我在哪里可以得到它 我搜索过它 但它不存在于我的硬盘上 如果您有 Visual Studio 等 则应
  • Nuget - 对象引用未设置为对象的实例

    我在 vs 2015 中遇到了 nuget 包管理器的问题 像Unity这样的一些包已经安装没有问题了 某些软件包 例如 EF 在安装时出现问题 像 Automapper 这样的一些软件包也有同样的问题 但是当我安装这个软件包的另一个版本时
  • C 中的链表数组:初始化和插入?

    我需要创建一个链表数组 如图所示 这就是我到目前为止所做的 typedef struct Node int data struct Node next Node int main void Node link 5 for int q 0 q
  • 我可以对(非成员)函数使用部分模板特化吗?

    我试图在 非成员 函数上使用部分模板专业化 但我在语法上遇到了问题 我在 StackOverflow 中搜索了其他部分模板专业化问题 但这些问题涉及类或成员函数模板的部分专业化 作为起点 我有 struct RGBA RGBA uint8
  • 为什么必须通过 this 指针访问模板基类成员?

    如果下面的类不是模板 我可以简单地拥有x in the derived班级 但是 通过下面的代码 我have to use this gt x Why template
  • 生成范围 [min,max] 内的随机数 [重复]

    这个问题在这里已经有答案了 我正在使用 C 生成范围 min max 内的整数随机数 我在用 int random int int min int max return min rand max min 但我认为上面的代码适用于范围 min
  • 使用 _Alignas 进行结构成员对齐

    我想知道以下问题 是新的吗 Alignas结盟 C11 中的说明符适用于结构成员吗 我一直假设这么多 但彻底阅读了 N1570 公开草案似乎表明对齐说明符不能 出现在一个说明符限定符列表 这就是我所期望的 如果得到支持的话 我已经读过几遍语
  • Gridview 错误:对 Bind 的调用格式不正确

    我有以下 gridview 代码
  • 返回 ICollection 而不是 List 的真正优势是什么? [复制]

    这个问题在这里已经有答案了 我读过几篇博客文章 提到对于公共 API 我们应该始终返回 ICollection 或 IEnumerable 而不是 List 返回 ICollection 而不是 List 的真正优势是什么 Thanks 复
  • 用于 nmap 输出的 C++ xml 解析器

    我是 nmap 的新手 我在 nmap 教程中看到 https nmap org book man output html https nmap org book man output html oX 选项可用于获取 xml 格式的 nma
  • 替换全局热键

    我有一个位于托盘中的应用程序 我想定义多个热键来触发我的程序中的事件 我从 AaronLS 在这个问题中的出色回答中找到了灵感 使用C 设置全局热键 https stackoverflow com a 27309185 3064934 如果
  • C#:如何处理乱序 TCP 数据包?

    请有人解释一下如何处理乱序数据包 我使用原始套接字来捕获数据包 并在数据包到来时解析它们 但其中一些数据包的顺序错误 例如 ID 标志 16390 PSH ACK 16535 PSH ACK 16638 确认 16640 PSH ACK 1

随机推荐

  • 在 iOS 中测量/计算距离

    我需要计算 iOS 中两点之间的距离 我可以保证至少有一部iPhone 4 所以相机的图像质量应该很好 这个想法是使用图片计算到某个点的距离 有一个名为 easyMeasure 的应用程序 它完全可以满足我的需要 我对毕达哥拉斯很满意 但这
  • 将简单的服务器代码部署到 Heroku

    我最近访问了 heroku com 网站并尝试在那里部署我的第一个 Java 程序 实际上我使用他们的 Java 部署教程有了一个良好的开端 并且运行正常 现在我有一个需要在那里部署的服务器代码 我尝试遵循该示例 但我有一些问题 例如 1
  • 邮递员 - 为每个请求覆盖用户代理

    我有一个网站 只有在基本身份验证登录后才能访问 您可以使用特定的用户代理绕过它 有没有办法始终将新请求的用户代理设置为某个值 目前它被硬编码为PostmanRuntime 7 29 0 目前 我总是为每个请求手动设置它 但这会减慢工作流程
  • Hedera 上几乎相同的交易中“gasUsed”值存在巨大差异 - 为什么?

    我注意到所使用的气体量之间存在差异 通过交易几乎是相同的 我正在调用智能合约 连续两次使用相同的参数 两者之间的唯一区别 是我正在设置gasLimit到精确值 由返回eth estimateGas在第一个中 我正在设置gasLimit to
  • 如何不需要用户输入 install.packages(type = "both")

    通常情况下 install packages type both 如果有需要从源代码构建的包 则需要用户输入 例如 目前 R 3 5 1 install packages c feather tidyr type both 将从二进制安装
  • 如何更新 bitbucket 上的拉取请求?

    如何在本地计算机上的 IDE 中的 bitbucket 上更新您自己的拉取请求之一 此工作流程没有按我的预期工作 克隆你的叉子 检查您用于拉取请求的分支 做出改变 git 添加 git 提交 推送提交 到您的分叉存储库 到目前为止一切顺利
  • MenuStrip 无法获得负载焦点

    我会尽可能准确 我有一个主表单 我们将在 Form1 中将其称为 Form1 用户可以通过菜单条启动另一个表单 在 Form2 中将其称为 Form2 我有另一个菜单条和一个数据网格视图 我的问题是 当用户启动 Form2 时 我必须在菜单
  • R函数将对象转换为代码

    我正在 R 中寻找一个函数 它将对象转换为可用于创建该对象的副本的代码 像这样的事情 gt myObject c 1 2 3 gt magicFunction myObject 1 c 1 2 3 我认为这个功能是存在的 但我找不到它 非常
  • 使用 Nginx 服务器设置 Symfony

    我的项目需要使用 Nginx 服务器设置 symfony 我之前曾将 Symfony 与 Apache 一起使用 目前我已按照此处提到的步骤进行操作 但不知何故它运行不正常 Update nginx wiki 现在包含symfony 1 4
  • Javascript eval() 和附加脚本标签之间的区别

    我想知道是否有人可以解释使用 Javascript 的 eval 和另一种方法之间的区别 例如使用 JQuery 创建脚本标签 然后将该元素附加到页面 eval somecode vs appendTo head 不确定这是否相关 但上下文
  • 如何让 Ohai 插件生成 ['etc']['passwd']?

    我已将 Chef 客户端从14 0 to 15 3 14但每当我在我的节点 macOS Mojave 上执行 Chef client 时 就会出现问题 客户端输出是 undefined method for nil NilClass Coo
  • CUDA:同步线程

    几乎在我读到的有关 CUDA 编程的任何地方都提到了 warp 中的所有线程都执行相同操作的重要性 在我的代码中 我遇到了无法避免某种条件的情况 它看起来像这样 some math code calculating d1 d2 if d1
  • 编译启用位码的 iOS 库

    我需要发布一个启用了位码的框架 但这很麻烦 我将项目设置中的 启用位码 设置为 是 它可以为真实设备和模拟器干净地构建 我想测试这个库 所以我将它集成到我为此目的创建的新应用程序中 但现在它只为模拟器构建 当我尝试为真实设备构建时 我得到
  • 插入包含撇号(单引号)的数据时MySQL出错?

    当我插入查询包含引号时 例如Kellog s 插入记录失败 错误信息 您的 SQL 语法有错误 检查手册 与您的 MySQL 服务器版本相对应 以便使用正确的语法 靠近 s 玉米片 170g 15 90 15 90 14 10 at 第 1
  • 如何在调试模式下运行 Apache Tomcat 8?

    我正在尝试在调试模式下运行 Apache Tomcat 8 0 21 当我发出命令时 sh catalina sh jpda start 它给出了这个错误 错误信息 错误 无法两次加载此 JVM TI 代理 请检查您的 java 命令 重复
  • SyncAdapter periodsync() 未触发

    我正在尝试弄清楚syncAdapter是如何工作的 我使用sampleSync Adapter作为示例 起点 并基于它进行了我的第一次测试 唯一的区别是我不使用默认的联系人提供程序 但我需要自己的联系人提供程序之一 此方法与 SampleS
  • 部分重写子类中的虚拟自动属性

    是时候回答我刚刚遇到的理论问题了 以下代码有效并可编译 public class Parent public virtual object TestProperty get set public class Child Parent pri
  • 访问服务时在 Docker Swarm 1.12 中记录客户端的“真实”IP 地址

    我有 nginx 容器作为服务在用户创建的覆盖网络内的 Docker Swarm 中运行 两者都是用以下内容创建的 docker network create driver overlay proxy docker service crea
  • 是什么导致 BigDecimal.divide 出现“非终止十进制扩展”异常? [复制]

    这个问题在这里已经有答案了 我以前使用过 BigDecimals 但不经常使用 今天早上我正在做一些事情 但我不断收到以下异常 Exception in thread main java lang ArithmeticException N
  • 使用 helix 工具包创建可点击的对象

    我在 Helix Toolkit 上找到了一个例子 它被称为 ScatterPlot 它非常接近我真正需要的 但我找不到任何关于如何将 onclick 事件侦听器添加到创建的对象 在本例中为球体 的信息 这会将球体添加到 游乐场 scatt