在WPF中存储和访问图像资源的最有效方法

时间:2014-02-21 20:24:15

标签: .net wpf image performance resources

问题的目的:

我正在启动一个应用程序,它将拍摄用户提供的图像并让它们在3D视图中通过Viewport3D和Viewport2DVisual3D进行游戏...

我需要经常在ViewPort3D中切换不同的图像 - 我想在2.5D中使用某种帧状/漫画效果 - 对于我希望一次显示10到50张图像的近似尺度估计,以及以最快0.2秒的间隔切换多达10个。选择这些图像的图像库可能包含数千个图像。

问题:

对于WPF中的性能,我存储这些图像的最佳方式是什么,以及访问它们以便快速从一个图像切换到另一个图像的最佳方式?我应该让用户指向我的图片文件夹,还是有办法“预编译”图像库以便更快地访问?

以下是关于如何使用这些内容的XAML片段,当然应用程序将在原型阶段的代码中生成所有这些对象。

 <Viewport3D>
        <Viewport3D.Camera>
            <PerspectiveCamera Position="60, 50, 100" FieldOfView="90"   LookDirection="0,0,-1" />                
        </Viewport3D.Camera>

        <Viewport2DVisual3D>                
            <Viewport2DVisual3D.Geometry>
                <MeshGeometry3D Positions="40,40,0 40,0,0 80,0,0 80,40,0"
                    TextureCoordinates="0,0 0,1 1,1 1,0" TriangleIndices="0 1 2 0 2 3"/>
            </Viewport2DVisual3D.Geometry>
            <Viewport2DVisual3D.Material>
                <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True"  Brush="Transparent"/>
            </Viewport2DVisual3D.Material>
            <Image Name="ImagePlaceHolder1" Source="Textures/Image1.gif"/>
        </Viewport2DVisual3D>

        <Viewport2DVisual3D>                
            <Viewport2DVisual3D.Geometry>
                <MeshGeometry3D Positions="40,80,0 40,40,0 80,40,0 80,80,0"
                    TextureCoordinates="0,0 0,1 1,1 1,0" TriangleIndices="0 1 2 0 2 3"/>
            </Viewport2DVisual3D.Geometry>
            <Viewport2DVisual3D.Material>
                <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True"  Brush="Transparent"/>
            </Viewport2DVisual3D.Material>
            <Image Name="ImagePlaceHolder2"  Source="Textures/Image2.jpg"/>
        </Viewport2DVisual3D>

0 个答案:

没有答案