5

我有一个表示带有纹理的 3D 模型的 XAML 文件。

我想让纹理从文件所在的位置或相对于文件的位置读取。

我使用 XamlReader 读取文件,因此我希望文件是独立的。

我使用 ImageBrush 放置纹理,其中 ImageSource 是一个包 synatx URI。

当我使用“siteoforigin”语法时,这仅在纹理文件位于应用程序旁边时才有效。我希望它在 Xaml 旁边,无论它在哪里。

我尝试将当前目录设置为 Xaml 目录,但没有帮助。

不使用包语法也不能正常工作 - 它只是查找具有该名称的资源。

我需要如何编写 Xaml 图像源(或者是否有另一种方法可以为漫反射材质画笔放置纹理?)以便它可以工作?

伊泰。

4

2 回答 2

1

我解决了这个问题,只需将 XAML 预加载到内存流中,将 siteoforigin:,,, 语句替换为 xaml 所在的路径,然后使用 XamlReader.Load 从更新的内存流中加载模型

顺便说一句,我的模型是使用您自己的 xaml 导出器插件导出的 SketchUp 导出,尽管我对其进行了修改以导出法线并将模型旋转到 WPF 坐标系等。

于 2015-05-13T03:42:16.460 回答
0

如果您的模型是一个独立的 xaml 文件,我认为以您描述的方式单独使用 xaml 加载纹理会有问题。来源站点将始终从应用程序所在的位置开始,因此如果您的 xaml 文件位于某个任意位置,并且不在应用程序的同一路径下,它将无法使用

我建议在您实际从 xaml 加载图像文件后将其添加到控件的资源集合中。然后实际的 xaml 可以像任何其他资源一样绑定到图像。

于 2011-05-17T12:52:27.637 回答