我有一个 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 即?