c#之在 WPF 中嵌入 Three.js 查看器

haluo1 阅读:49 2025-12-25 22:24:30 评论:0

我正在尝试使用 Three.js 创建一个跨平台 3D 渲染器,只需在 native 应用程序中使用“WebView”/“WebBrowser”类型元素即可在几乎任何平台上使用该渲染器。到目前为止,我已经让它在 Windows 8.1(应用商店)和 Windows Phone 8.1 应用程序上运行,并且查看器在 Internet Explorer 11 桌面浏览器中运行良好。我的问题是我无法让它在同一台台式计算机上的 WPF 应用程序中工作。

目前我正在使用以下代码加载我的页面:

            private const string MainUri = "file:///{0}/Html/stlviewer.html"; 
            string curDir = Directory.GetCurrentDirectory(); 
            webView.Navigate(new Uri(String.Format(MainUri, curDir))); 

然后发生的情况是,一旦我首先启动我的应用程序,我会收到一个对话框,询问我是否要运行 ActiveX(这是 Not Acceptable ),当我说"is"时,我在 Three.min.js 第 22 行 char 190 处收到错误错误“预期':'和代码0。这最终会导致对其他JavaScript文件中的三个以及我的html文件中的主脚本的 undefined reference 。

我尝试添加“MARK OF THE WEB”标签:

<!-- saved from url=(0016)http://localhost --> 

这确实消除了 ActiveX 对话框,但它似乎使我的 JavaScript 问题变得更糟,因为现在我仍然在同一文件中遇到 JavaScript 错误,但突然在除我的 html 文件之外的所有文件中都没有有关错误的信息现在,除了错误字段仅显示“脚本错误”之外,所有字段均显示 0。

到底是什么原因导致了这个问题,或者至少是我做错了什么,因为这在正常的 IE、商店应用程序和 WP 中都可以工作,但现在 WPF 突然认为 Three.min.js 文件有问题?

PS。我的 Three.min.js 文件是标准的 r66 文件,我知道 r67 存在,但 WP 8.1 尚不兼容。

编辑: 以防万一您想知道,使用以下标记也不起作用:

<!-- saved from url=(0014)about:internet --> 

编辑: 好吧,我发现问题可能是 WPF 中的 WebBrowser 使用 IE7(或者至少在其行为类似的模式下)而不是 IE11,但我不知道这是否可以修复。

编辑: 好吧,在遵循 http://weblog.west-wind.com/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version 之后,WebGL 现在至少可以工作了在 IE11 模式下设置 Web 浏览器,但当我使用 web 标记的标记禁用 ActiveX 对话框时,突然我无法再加载任何 JavaScript 文件。通过此设置,触摸功能无法像在桌面 IE 上那样工作。我使用 Hammer.js 进行触摸,但它似乎没有向 Hammer 发送多点触控信息,它只是尝试实现捏合缩放本身。有什么想法吗?

请您参考如下方法:

尝试使用 WinForms 和 WPF 开箱即用的 CefSharp 组件来代替 WebBrowser 组件。


标签:C#
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号