【发布时间】:2014-08-16 02:27:10
【问题描述】:
我正在创建一个使用 iOS 设计美学的软件。它是一个全屏音乐应用程序,它使用当前曲目插图作为整个窗口的模糊背景。
所以在我抓取并保存 CurrentTrackArtwork 之后。我用它作为我的图像控制的来源。
<Image x:Name="PTrackCoverBlur" width="1450" height="1450" Opacity="0">
<BlurEffect Radius="15" KernelType="Box" RenderingBias="Performance" RenderOptions.BitmapScalingMode="LowQuality" RenderOptions.EdgeMode="Aliased"/>
</image>
但是,我需要一个高质量的模糊,它不会在保存图像并将其重新显示为模糊图像期间使应用程序挂起。但我无法将模糊半径设置为高于 15,甚至无法将其设为高斯模糊,我什至将 RenderingBias 设置为“性能”,但我仍然有延迟。 (每次轨道改变时,我使用情节提要将图像控件的不透明度设置为 0,这就是延迟发生的地方)
<Storyboard x:Key="FadeOutBlurCover" Completed="FadeOutBlurCover_Completed">
<DoubleAnimation Duration="0:0:0.30" Storyboard.TargetName="PTrackCoverBlur" Storyboard.TargetProperty="Opacity" To="0"/>
<ColorAnimation Duration="0:0:0.30" Storyboard.TargetName="AppContentMask" Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)" To="#CCFFFFFF"/>
</Storyboard>
然后我尝试再次获取当前曲目插图并使用故事板将图像不透明度重置为 1 以重新显示背景
<Storyboard x:Key="FadeInBlurCover" Completed="FadeInBlurCover_Completed">
<DoubleAnimation Duration="0:0:0.20" Storyboard.TargetName="PTrackCoverBlur" Storyboard.TargetProperty="Opacity" To="1"/>
<ColorAnimation Duration="0:0:0.20" Storyboard.TargetName="AppContentMask" Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)" To="#CCF9F9F9"/>
</Storyboard>
我的问题是,这就是导致应用程序滞后并挂起的原因。当我删除这个 BlurEffect 时,一切都很顺利,每个故事板都按预期工作。但是模糊背景是我的应用程序中最重要的资产之一,我不想删除它,
无论如何,我可以通过编程方式加载模糊并保存它,包括模糊,这样我就不必使用 BlurEffect 但在我的应用程序中仍然有 Blur。我更喜欢VB,但任何语言都可以。
我正在创建的这个应用程序是一个功能齐全的音乐播放器,它通过 COM 连接到 iTunes,当曲目发生变化时会发生很多事情,比如重新加载以前播放的曲目。获取新曲目的信息,显示播放次数最多的歌曲列表等。这就是为什么如果有人可以给我一个代码,用于模糊图像的新方法将是我的应用程序的完美解决方案。
【问题讨论】: