美文网首页有些文章不一定是为了上首页投稿
SwiftUI:特殊效果 - 模糊,混合模式,饱和度调整等

SwiftUI:特殊效果 - 模糊,混合模式,饱和度调整等

作者: 韦弦Zhy | 来源:发表于2020-05-04 22:51 被阅读0次

\color{red}{\Large \mathbf{Hacking \quad with \quad iOS: SwiftUI \quad Edition}}

{\Large \mathbf{Drawing: Special \ Effects}}

keyboard

SwiftUI使我们能够出色地控制视图的呈现方式,包括应用实时模糊,混合模式,饱和度调整等功能。

混合模式使我们可以控制一个视图在另一个视图上的渲染方式。默认模式是.normal,它只是将新视图中的像素绘制到后面的任何东西上,但是有很多选项可以控制颜色和不透明度。

例如,我们可以在ZStack中绘制一个图像,然后在顶部添加一个红色矩形,该矩形使用 multiply 混合模式绘制:

ZStack {
     Image("zhy")
     Rectangle()
         .fill(Color.red)
         .blendMode(.multiply)
 }
 .frame(width: 1000, height: 500)
 .clipped()
Multiply Blend

之所以命名为“Multiply”,是因为它将每个源像素颜色与目标像素颜色相乘——在我们的示例中,是图像的每个像素和顶部的矩形的每个像素。每个像素具有RGBA的颜色值,范围从0(没有该颜色)到1(所有颜色),因此所得的最高颜色为1x1,最低的颜色为0x0。

对纯色使用乘法会产生一种非常常见的色调效果:黑色保持黑色(因为它们的颜色值为0,所以无论您将顶部乘以0都将产生0),而较浅的颜色会变成各种阴影着色。

实际上,Multiply 是如此普遍,以至于有一个快捷键修饰符,这意味着我们可以避免使用ZStack

var body: some View {
    Image("PaulHudson")
        .colorMultiply(.red)
}

还有很多其他混合模式可供选择,值得花一些时间尝试一下它们的工作方式。另一个流行的效果称为 screen,它的作用与乘法相反:将颜色反转,执行乘法,然后再次反转颜色,从而产生较亮的图像而不是较暗的图像。

Screen Blend

例如,我们可以在堆栈内部的各个位置绘制三个圆,然后使用滑块控制其大小和重叠:

struct ContentView: View {
    @State private var amount: CGFloat = 0.0

    var body: some View {
        VStack {
            ZStack {
                Circle()
                    .fill(Color.red)
                    .frame(width: 200 * amount)
                    .offset(x: -50, y: -80)
                    .blendMode(.screen)

                Circle()
                    .fill(Color.green)
                    .frame(width: 200 * amount)
                    .offset(x: 50, y: -80)
                    .blendMode(.screen)

                Circle()
                    .fill(Color.blue)
                    .frame(width: 200 * amount)
                    .blendMode(.screen)
            }
            .frame(width: 300, height: 300)

            Slider(value: $amount)
                .padding()
        }
        .frame(maxWidth: .infinity, maxHeight: .infinity)
        .background(Color.black)
        .edgesIgnoringSafeArea(.all)
    }
}
Screen Blend

如果您特别注意观察,可能会注意到中间完全混合的颜色不是很白——这是一种非常淡的淡紫色。原因是Color.redColor.greenColor.blue并不完全是这些颜色。使用Color.red时看不到纯红色。取而代之的是,您会看到SwiftUI的自适应颜色旨在在黑暗和明亮模式下看起来都不错,因此它们是红色,绿色和蓝色的自定义混合色,而不是纯色。

如果您想看到混合红色,绿色和蓝色的全部效果,则应使用以下三种自定义颜色:

.fill(Color(red: 1, green: 0, blue: 0))
.fill(Color(red: 0, green: 1, blue: 0))
.fill(Color(red: 0, green: 0, blue: 1))

我们可以应用许多其他实时效果,并且我们已经在项目3中介绍了模糊blur()。因此,在继续进行之前,让我们看一下另外一个:饱和度saturation(),用于调整颜色的数量。在视图内部使用。给它一个介于0(无颜色,只有灰度)和1(全色)之间的值。

Image("zhy")
    .resizable()
    .scaledToFit()
    .frame(width: 200, height: 200)
    .saturation(Double(amount))
    .blur(radius: (1 - amount) * 20)
混合色为白色,饱和度和模糊调整

使用该代码,将滑块设为0意味着图像模糊无色,但是当您将滑块向右移动时,它将获得色彩并变得清晰——所有这些均以闪电般的速度渲染。

一些其他的渲染模式,除此之外还有很多可以自己尝试:


Blend 列举

译自 Special effects in SwiftUI: blurs, blending, and more

相关文章

  • SwiftUI:特殊效果 - 模糊,混合模式,饱和度调整等

    SwiftUI使我们能够出色地控制视图的呈现方式,包括应用实时模糊,混合模式,饱和度调整等功能。 混合模式使我们可...

  • PS基础课--4月2日作业

    图层蒙版、图层样式及混合模式 打开素材→在图层面板调整自然饱和度为100,饱和度为20→点击图层蒙版‘选择画笔工具...

  • 每日一练丨打卡~PS混合选项+关于美丑的练习

    效果图: 只看效果,图片有点模糊可以忽略掉~ 主要技能: PS图层样式-混合选项,主要利用混合模式来调整效果。 在...

  • 影像后期【photoshop色彩调整处理汇总】

    制作怀旧照片: 可以利用【曲线】、【图层混合模式】、【黑白】、【色相饱和度】。最简单的是最后一个。启用【色相饱和度...

  • PS: 海报设计

    一、欧美时尚风格 图像→调整→色相饱和度(着色)雅典字体 人物影子:ctrl+j→滤镜(高斯模糊)→图像调整(曲线...

  • 着色器图像处理(饱和度)

    图像的自身混合操作:图像处理是根据图像自身计算并生成基值,图像可能为灰度图或模糊图像 饱和度 颜色饱和度可描述为颜...

  • 合成笔记

    01色彩通道 三原色 红色 绿色 蓝色 加色模式 图像模式 色相饱和度(单独调整单色) 色彩平衡(单独调整高光阴影...

  • Davinci Resolve Tutorial Power o

    降噪 提升饱和度 曲线调整曝光 新建并联节点,单色处理,并用Overlay模式合成 在上述单色节点进行S型曲线调整...

  • 【AE学习笔记】第二节:老电影处理效果

    学习重点: 1.利用AE的图层混合模式叠加图层; 2.使用快速模糊跟蒙版羽化制作镜头失焦效果; 3.使用调整图层对...

  • PPT配色

    饱和度:颜色越来越灰 亮度:从白变有色再变黑 如果想在ppt中精确调整色相、饱和度和亮度,就把颜色模式改成HSB ...

网友评论

    本文标题:SwiftUI:特殊效果 - 模糊,混合模式,饱和度调整等

    本文链接:https://www.haomeiwen.com/subject/vyxowhtx.html