gpt4 book ai didi

wpf3d 矩形 HitTest

转载 作者:行者123 更新时间:2023-12-03 17:59:34 28 4
gpt4 key购买 nike

我有一个包含驻留在 Viewport3D 中的 3D 对象的应用程序,我希望用户能够通过在屏幕上拖动一个矩形来选择它们。

我尝试在 Viewport3D 上应用 GeometryHitTestParameters(带有矩形几何)以获得结果,但我收到一个异常,告诉我它不支持 Viewport3D。仅支持 PointHitTestParameters。

有没有人知道任何优雅的方法来做到这一点,除了自己计算它(例如 - 将所有 3D 对象投影到 2D 并与矩形进行手动几何交集)?

最佳答案

我怀疑有比遍历选定的矩形点更好的方法:

    private void view_PreviewMouseDown(object sender, MouseButtonEventArgs e) {
const double offset = 3.0; // I will test in a square 7x7
var mouse = e.GetPosition(this);
var items = new HashSet<Model3D>();
for (double x = mouse.X - offset; x <= mouse.X + offset; x++)
for (double y = mouse.Y - offset; y <= mouse.Y + offset; y++) {
PointHitTestParameters pointparams = new PointHitTestParameters(new Point(x, y));
Model3D result = null;
VisualTreeHelper.HitTest(view, null, rawresult => {
var rayResult = rawresult as RayMeshGeometry3DHitTestResult;
if (rayResult != null)
items.Add(rayResult.ModelHit);
return HitTestResultBehavior.Continue;
}, pointparams);
}
// temporary ListBox to show items
list.ItemsSource = items.Select(item => item as GeometryModel3D == null ? null : (item as GeometryModel3D).Material as object);
}

MSDN How to: Hit Test in a Viewport3D

关于wpf3d 矩形 HitTest ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4428853/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com