UWP 图片模糊

原文:UWP 图片模糊

先看一下效果:

这是微识别的个人中心页面,顶部有头像,以及背景图片模糊。

要实现这样的效果,有两种方法。

第一种麻烦点,也是我现在用的。想看简单的,翻到最后

1、

首先看一下xaml代码:

                <StackPanel Grid.Row="0" x:Name="ibCover" CornerRadius="7">
                    <Button x:Uid="Button_Cover" Content="Cover" FontSize="10" HorizontalAlignment="Right" VerticalAlignment="Top" Style="{StaticResource RadiusCornerButton}" Click="SelectCover_Click"/>
                    <Ellipse x:Name="ellipse" Width="200" Height="200" RenderTransformOrigin="0.5,0.5" Tapped="SelectHead_Tapped" PointerEntered="Head_PointerEntered" PointerExited="Head_PointerExited">
                        <Ellipse.RenderTransform>
                            <CompositeTransform/>
                        </Ellipse.RenderTransform>
                        <Ellipse.Resources>
                            <!--Storyboard是一个动画容器-->
                            <Storyboard x:Name="EllStoryboard" RepeatBehavior="1x">
                                <DoubleAnimation Duration="0:0:0.36" To="360" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" Storyboard.TargetName="ellipse" d:IsOptimized="True"/>
                            </Storyboard>
                        </Ellipse.Resources>
                        <Ellipse.Fill>
                            <ImageBrush x:Name="ibHead" ImageSource="ms-appx:///Assets/DefaultUserImage.png"/>
                        </Ellipse.Fill>
                    </Ellipse>
                    <TextBox x:Name="TextBox_UserName" x:Uid="TextBox_UserName" Margin="0,12,0,0" PlaceholderText="UserName" Style="{StaticResource UserProfileTextBox}" LostFocus="UserName_LostFocus" PointerEntered="UserName_PointerEntered" PointerExited="UserName_PointerExited"/>
                    <TextBox x:Name="TextBox_Remark" x:Uid="TextBox_Remark" Margin="0,7,0,12" PlaceholderText="Remark" Style="{StaticResource UserProfileTextBox}" LostFocus="Remark_LostFocus" PointerEntered="Remark_PointerEntered" PointerExited="Remark_PointerExited"/>

                </StackPanel>

我是定义了一个StackPanel,圆角=7,xName=rbCover。就是对它的背景进行模糊

在后台cs代码的实现是:

                BitmapImage biUserCenterCover = new BitmapImage();
                if (up.Cover != null)
                {
                    StorageFolder storageFolder = ApplicationData.Current.TemporaryFolder;
                    StorageFile thumbFile = await storageFolder.CreateFileAsync("UserCenterCover.jpg", CreationCollisionOption.ReplaceExisting);
                    await FileIO.WriteBytesAsync(thumbFile, up.Cover);
                    StorageItemThumbnail sit = await thumbFile.GetThumbnailAsync(ThumbnailMode.DocumentsView, 400);
                    IRandomAccessStream ras = sit.AsStream().AsRandomAccessStream();

                    await biUserCenterCover.SetSourceAsync(ras);
                    ImageBrush ib = new ImageBrush();
                    ib.ImageSource = biUserCenterCover;
                    ib.Stretch = Stretch.UniformToFill;
                    //ib.Opacity = 0.88;
                    ibCover.Background = ib;

                    var blurredElement = await ibCover.BlurElementAsync(8);
                    ibCover.Background = new ImageBrush
                    {
                        ImageSource = blurredElement,
                        Stretch = Stretch.UniformToFill
                    };
                }

其实关键代码是

var blurredElement = await ibCover.BlurElementAsync(8);
                    ibCover.Background = new ImageBrush
                    {
                        ImageSource = blurredElement,
                        Stretch = Stretch.UniformToFill
                    };

因为我的背景图片是让用户自己选择的,并且存储在了sqlite中,所以前面加了一大堆读取的代码。

然后代码可以封装成一个函数,在OnNavigatedTo或者loaded中调用都行。

第二种方法,比较简单,就是使用UCT(UWP Community Toolkit)中的控件,

看效果

xaml:

    <Grid>
        <Image Source="ms-appx:///Assets/7cc829d3gy1flhxvvhst8j20k00k23zq.jpg"/>
        <Border BorderBrush="Black" BorderThickness="1" Height="600" Width="800">
            <Border.Background>
                <media:BackdropBlurBrush x:Name="blurBrush" Amount="0" />
            </Border.Background>
        </Border>
        <Slider Width="200" VerticalAlignment="Bottom" HorizontalAlignment="Left" ValueChanged="Slider_ValueChanged" Maximum="10"/>
    </Grid>

别忘记引用 xmlns:media="using:Microsoft.Toolkit.Uwp.UI.Media"

        private void Slider_ValueChanged(object sender, Windows.UI.Xaml.Controls.Primitives.RangeBaseValueChangedEventArgs e)
        {
            blurBrush.Amount = (sender as Slider).Value;
        }

我用了一个Slider来实现了动态调节,一般实际用的时候,你只需要直接指定 media:BackdropBlurBrush的Amount即可。

原文地址:https://www.cnblogs.com/lonelyxmas/p/8593944.html

时间: 2024-10-10 19:26:59

UWP 图片模糊的相关文章

【手机网页】手机网页显示图片模糊问题

[本文原创,谢绝转载] [总结] 1.手机浏览器,不管是UC.原生浏览器.safari,显示页面都是按照320px的 2.由于现在手机的宽度都大于320px,所以,图片会模糊 3.像苹果的retina屏幕的方式学习! 先把图片做成两倍长宽的大小,然后通过css样式强制做成原大小 [手机网页]手机网页显示图片模糊问题,布布扣,bubuko.com

css3简单实现图片模糊过滤效果

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>     <meta http-equiv="Cont

devicePixelRatio手机图片模糊的原因

一.移动设备图片模糊问题 手机上图片模糊问题原因就是一个像素在电脑上和手机上代表的实际像素的不同. 我们在样式表中使用的px(独立像素)单位其实并不一定代表着实际的一个像素(物理像素),这还要看硬件的设置.例如下面盗来的图片,右图一个独立像素等于四个像素,左图一个独立像素等于一个像素.devicePixelRatio为表示这个比例的值,如果设备宽度为640物理像素,320独立像素,则devicePixelRatio为640/320=2,一个独立像素等于4个物理像素. 所以,如果切了一张10像素宽

WPF_界面_图片模糊解决之道整理

原因分析与解决方案: 1. 检查图片,png, DPI=72,Stretch="None",原图尺寸和xaml里面写的尺寸一致.如果替换为大尺寸的原图,使用时,size写的小一点,同比例缩小,没问题. 2. 像素对齐,SnapsToDevicePixels="True". 3. 把图片拷贝到空白的项目里面,发现有的图片模糊,有的不模糊.布局复杂一点,模糊的概率大. 4. 改变项目中的xaml 布局,神奇的出现了,左右两个边清晰了,上下还是模糊的,换个地方,上下左右都

cocos2dx3.x 图片模糊解决方法

最近做cocos2dx ,由于在window平台上运行的游戏,故出很多问题,图片模糊就是其中一个. 下面给出我的解决方案,(由于用的cocostudio 加载的图片文件,故只能改源码解决了)(个人建议还是最好不要改源码) cocostudio文件加载进来后都会将图片放入cache里面. 故我们找到TextureCache类(即CCTextureCache)在里面添加一个公共函数 // add by xxj 2014/08/25 11:33:18 // 设置抗锯齿 void setAliasTex

iOS CoreImage/图片模糊处理(一)

CoreImage 是从 iOS5.0开始引入,其功能强大不由惊叹. 不管是扫一扫,生成二维码,人脸识别,图片压缩,滤镜等处理,应有竟有. 图片模糊是从6.0开始支持,下面我们从一个简单的例子看起. 首先介绍一个对象 : CIImage 不是 UIImage. CIImage是CoreImage中的图片对象. 常用的创建的方式是 <span style="font-size:14px;">+ (CIImage *)imageWithContentsOfURL:(NSURL

Unity3D中UI图片模糊,不清晰解决怎么解决

很久没写博文,今天刚好有同事问到:NGUI为什么做的界面图片那么模糊,比美术给的图片相比不是很清晰. 其实这个问题解决方法很简单,只要把NGUI生成的图集的图片类型改成"GUI"或者"Advance"(去掉generate mip maps),而且Filter Mode都选择(Point). 这样即可. Unity3D中UI图片模糊,不清晰解决怎么解决

移动端高清适配方案(解决图片模糊问题、1px细线问题)

本文介绍了移动端适配的3种方法,以及移动端图片模糊问题和1px细线问题的解决方法.当然了,在这之前先整理了与这些方法相关的知识:物理像素.设备独立像素.设备像素比和viewport. >>>>物理像素.设备独立像素和设备像素比 在CSS中我们一般使用px作为单位,需要注意的是,CSS样式里面的px和物理像素并不是相等的.CSS中的像素只是一个抽象的单位,在不同的设备或不同的环境中,CSS中的1px所代表的物理像素是不同的.在PC端,CSS的1px一般对应着电脑屏幕的1个物理像素,但

uwp 图片切换动画 使用帧动画

原文:uwp 图片切换动画 使用帧动画 上一篇博客使用了Timer来实现图片的切换,@lindexi_gd讨论了一下性能,我本人其实对性能这一方面不太熟,但我觉得还是有必要考虑一下,那么今天我们使用帧动画开实现以下 新建项目,添加一个Button和Image 在Page里定义资源 <Storyboard x:Key="std" x:Name="std" RepeatBehavior="Forever" AutoReverse="T