在WPF中嵌入Three.js查看器

Embed Three.js viewer in WPF

本文关键字:js Three WPF      更新时间:2023-09-26

我正在尝试使用Three.js来创建一个跨平台的3D渲染器,一个可以在几乎任何平台上使用的,只需在本地应用程序中使用一个"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(这是不可接受的),当我说是,我得到错误在3 .min.js在第22行字符190错误"预期':'和代码0。这最终会导致其他JavaScript文件中对THREE的未定义引用,以及我的html文件中的主脚本。

我试过添加WEB标记:

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

这确实带走了ActiveX对话框,但它似乎使我的JavaScript问题更糟,因为现在我仍然得到JavaScript错误在相同的文件,但突然在所有文件除了我的html文件没有关于错误的信息了,它只是说0在所有字段除了错误一个只是说'脚本错误'。

到底是什么导致了这个,或者至少我做错了什么,因为这在正常的IE,商店应用程序和WP中工作,但现在突然WPF决定有一些问题与three.min.js文件?

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

编辑:如果有人想知道,使用下面的标签也不起作用:

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

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

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

尝试CefSharp而不是WebBrowser组件,这些组件在WinForms和WPF中都是现成的