2

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

4

1 回答 1

0

您可能要考虑使用WriteableBitmap而不是 WPF 画笔。然后,您可以写入所需的任何像素,而无需缓存像素数据以外的任何内容。

于 2011-07-07T17:46:45.423 回答