我有一个 XAML 文件,表示带有纹理的 3D 模型。
我想让纹理从文件所在的同一位置读取,或相对于它。
我使用 XamlReader 读取文件,所以我希望文件是自包含的。
我使用 ImageBrush 放置纹理,其中 ImageSource 是包 Synatx URI。
当我使用“siteoforigin”语法时,这仅在纹理文件位于应用程序旁边时才有效。我希望它在 Xaml 旁边,无论它在哪里。
我尝试将当前目录设置为 Xaml 目录,但没有帮助。
不使用包语法也不起作用 - 它只是查找具有该名称的资源。
我需要如何编写 Xaml 图像源(或者是否有另一种方法可以为漫反射 Material 画笔放置纹理?)才能正常工作?
痛。
最佳答案
我通过将 XAML 预加载到内存流中,用 xaml 所在的路径替换 siteoforigin:,,, 语句,然后使用 XamlReader.Load 从更新的内存流加载模型来解决这个问题
顺便说一句,我的模型是使用您自己的 xaml 导出器插件导出的 Sketchup 导出,尽管我对其进行了修改以导出法线并将模型旋转到 WPF 坐标系等。
关于wpf - 链接到表示 3D 模型的自包含 XAML 中的外部纹理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1509906/