gpt4 book ai didi

c# - 使用 .NET/WPF 预加载图像资源

转载 作者:太空狗 更新时间:2023-10-29 23:45:07 26 4
gpt4 key购买 nike

我想在应用程序启动时预加载我的图像资源。图像应缓存在应用程序内存中。所以我可以使用我的应用程序中预加载的图像。

问题是,如果我加载一个包含大量图像的特定 View ,应用程序挂起几秒钟,之后将出现 View 。申请是XAML -based,但图像控件的源属性是动态更改的。

我已经测试了一些东西,但似乎没有任何效果。

var uri = new Uri ( "pack://application:,,,/Vibrafit.Demo;component/Resources/myImage.jpg", UriKind.RelativeOrAbsolute ); //unit.Image1Uri;
var src = new BitmapImage ( uri );
src.CacheOption = BitmapCacheOption.None;
src.CreateOptions = BitmapCreateOptions.None;

src.DownloadFailed += delegate {
Console.WriteLine ( "Failed" );
};

src.DownloadProgress += delegate {
Console.WriteLine ( "Progress" );
};

src.DownloadCompleted += delegate {
Console.WriteLine ( "Completed" );
};

但是图片加载不出来。加载图像的唯一方法是在 Image-Control 内的屏幕上显示它,并将 Source-Property 分配给我新创建的 BitmapImage-Object。但我不想在启动时显示所有图像。

最佳答案

如果你想让图片立即加载,你需要设置这个缓存选项:

src.CacheOption = BitmapCacheOption.OnLoad;

否则,它会在您第一次访问数据时按需加载(或者,在您的情况下,每次您尝试访问图像数据时,因为您选择了 None)。

参见 documentation

另外,您在设置缓存选项之前设置UriSource 。所以尝试类似的东西(我脑子里乱七八糟,现在无法测试):

var uri = new Uri ( "pack://application:,,,/Vibrafit.Demo;component/Resources/myImage.jpg", UriKind.RelativeOrAbsolute ); //unit.Image1Uri;
var src = new BitmapImage ();
src.BeginInit();
src.CacheOption = BitmapCacheOption.OnLoad;
src.CreateOptions = BitmapCreateOptions.None;
src.DownloadFailed += delegate {
Console.WriteLine ( "Failed" );
};

src.DownloadProgress += delegate {
Console.WriteLine ( "Progress" );
};

src.DownloadCompleted += delegate {
Console.WriteLine ( "Completed" );
};
src.UriSource = uri;
src.EndInit();

关于c# - 使用 .NET/WPF 预加载图像资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28559064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com