【发布时间】:2011-09-18 15:10:46
【问题描述】:
我有一个 WPF 3D 应用程序 (C# .NET 4.0),它有很多 3D 几何图形。现在我需要通过应用纹理为这些几何图形着色。纹理的来源是一个大的 .PNG 文件,如下所示:
.PNG 文件包含重复部分。 Case、Deviation 和 Harmonic 的每种组合都有一个部分。个案有一个或多个偏差 (nDev)。案例也有一个或多个谐波(nHarm)。所以section的数量等于每个Case的nDev * nHarm之和。
一个部分中的每一行像素都映射到一个几何图形。
最终用户应该能够选择 Case(槽组合框)、Deviation(槽滑块)和 Harmonic(槽滑块)。这种组合导致截面偏移。基本思想是,此部分偏移可用于使用 TranslateTransform 在原始 .png 上重新定位“映射区域”。
现在我面临的挑战。一个正常的结果文件包含大约: 每节 200 到 400 行 32 至 64 次谐波 最多 250 个偏差 20到30例
为了获得最佳性能,我应该使用保持在RenderCapability.MaxHardwareTextureSize 范围内的纹理。因此,我想按案例拆分 .png(如有必要,按偏差和/或谐波)。
问题:如何将原始 .png 文件拆分为多个画笔?使用哪种刷子可以获得最佳性能?我应该坚持使用 ImageBrush(因为它在初始拆分后是静态的)还是使用 BitmapCacheBrush 即?
【问题讨论】:
-
如果你还没有遇到这个链接,它可能很有用,这里有一个性能权衡列表msdn.microsoft.com/en-us/library/bb613553.aspx
-
感谢链接。我已经看到了。这就是为什么我正在考虑使用多个 ImageBrushes。另一种解决方案是使用一个 BitmapCacheBrush 并重新填充它。这就是我想通过这个问题找到的。
-
但是问题仍然有效,我们决定停止使用 .png 文件并使用带有值的二进制格式文件。我将即时将这些值转换为图像。期望这将以适合 MaxHardwareTextureSize 范围的方式减小整体文件大小...
标签: wpf 3d transform textures brush