gpt4 book ai didi

c# - 每秒闪烁一次更新 BitmapImage

转载 作者:行者123 更新时间:2023-11-30 16:16:27 40 4
gpt4 key购买 nike

我试图通过每秒设置 source 属性来更新图像,这可行,但是在更新时会导致闪烁。

CurrentAlbumArt = new BitmapImage();
CurrentAlbumArt.BeginInit();
CurrentAlbumArt.UriSource = new Uri((currentDevice as AUDIO).AlbumArt);
CurrentAlbumArt.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
CurrentAlbumArt.EndInit();

如果我不设置 IgnoreImageCache,图像不会更新,因此也不会闪烁。

有没有办法绕过这个警告?

干杯。

最佳答案

以下代码片段在将图像的 Source 属性设置为新的 BitmapImage 之前 下载整个图像缓冲区。这应该可以消除任何闪烁。

var webClient = new WebClient();
var url = ((currentDevice as AUDIO).AlbumArt;
var bitmap = new BitmapImage();

using (var stream = new MemoryStream(webClient.DownloadData(url)))
{
bitmap.BeginInit();
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.StreamSource = stream;
bitmap.EndInit();
}

image.Source = bitmap;

如果下载需要一些时间,最好在单独的线程中运行它。然后,您还必须通过在 BitmapImage 上调用 Freeze 并在 Dispatcher 中分配 Source 来确保正确的跨线程访问。

var bitmap = new BitmapImage();

using (var stream = new MemoryStream(webClient.DownloadData(url)))
{
bitmap.BeginInit();
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.StreamSource = stream;
bitmap.EndInit();
}

bitmap.Freeze();
image.Dispatcher.Invoke((Action)(() => image.Source = bitmap));

关于c# - 每秒闪烁一次更新 BitmapImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18302424/

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