我的头像

请登录账号

ID:123123

象刀VIP会员

普通会员

到期时间:2022-12-30

● 1000+模板免费下载

● 10W+素材无限下载

● 单页PPT组合下载

● 音频 / 字体免费下载

● 免费专属创建导航

● 专属客服咨询

查看完整权益>

选择套餐

  • 12个月

    139

    低至每月11元

  • 6个月

    79

    低至每月13元

  • 3个月

    59

    80%用户的选择

  • 1个月

    39

    紧急需要就选我

支付方式

  • 微信
  • 支付宝

购买后不支持7天无理由退款,支付即视为你同意 《会员服务协议》 联系客服

立即支付

应付金额: ¥39

首页 > 象刀学院 > 我用PPT做了个渐变色生成器,“一点”出美色
  • 收藏

我用PPT做了个渐变色生成器,“一点”出美色

来源:象刀PPT 作者:黑白间设计 2022/01/05 16:03:36

不少朋友向我诉过苦,

说渐变色不好做,

总是辣眼睛。


本期,

我用PPT做了这么个渐变生成器。

点一次,

就会生成一组和谐的渐变色。

简历模板


不喜欢,

就多点几次,

遇到喜欢的,

直接格式刷到自己的形状上就行。

简历模板


本着鱼和渔具都要给的原则,

接下来详细讲解一下原理和制作过程。


制作思路和关键步骤


1、色彩三要素:

这是PPT的颜色设置界面。


横轴代表了色相,

可以理解为颜色的名字。

比如红色、绿色、黄色等等,

纵轴代表了饱和度,

表示颜色中所含有色成分的比例,

饱和度越高,

颜色越鲜艳。

右侧单独的条形区域,

是明度。


色相、饱和度、明度,

称为色彩三要素,

用它们作为参数描述颜色,

就是HSL色彩模式。

简历模板


它相比RGB色彩模式而言,

更符合人类思考习惯,

对控制颜色变化更有指导意义。


2、渐变原理

一束白光可以分解出所有色相。


我们保持S和L参数不动,

只变化一个H参数,

就相当于在一个娘生的兄弟里挑了两个出来。


举个实例,

在双色渐变中,

将第2个渐变滑块设置为和第1个滑块同色,

然后再点击色彩下拉栏中的【其他颜色】,

平行于横轴,

在原始颜色右侧不远处再选一个颜色,

这实际上就是只变化了色相,

这个渐变看起来就比较和谐。

简历模板


再来一次,

回到原始颜色,

这次我不往右边找,

往左边找,

看起来也比较和谐。

简历模板


这些都是色相渐变。


如果保持HSL的H和S不变,

只变化L,

就是明度渐变。

选中第二个滑块,

在右边条形控制区域,

直接将滑块给拉下来,

得到明度渐变。

这些都是明度渐变。


3、平面框架

色彩原理清楚了,

接下来做工具的平面框架,

我在页面上绘制了10个圆角矩形,

给它们设置渐变外框和外阴影,

增加一点儿设计感。


点击文件【选项】按钮,

在【自定义功能区】中,

找到【开发工具】并勾选,

菜单栏出现了开发工具选项卡,

插入一个【命令按钮】控件,

右键选择【属性表】,

在caption里输入内容文字。

简历模板


平面框架完成。


4、VBA实现

接下来需要把逻辑流程变为程序,

双击控件打开VBA窗口,

按以下逻辑编程。


第一步

随机生成一组HSL值。

第二步:

以 [0,255] 为范围,

自义定步长移动原始H和L值,

得到新的HSL值。

第三步:

因为PPT中的VBA填充对象没有HSL属性,

只有RGB属性,

所以需要自己定义转换函数,

将HSL值转换为软件能识别的RGB值。

第四步:

以原始值和多组新值为输入,

赋予每个形状渐变色。


具体的代码如下:

感兴趣的朋友也可在文末下载源文件查看。


滑动阅览


Private Sub CommandButton1_Click()

Set myDocument = ActivePresentation.Slides(1)

Dim h1 As Integer, h2 As Integer, h3 As Integer, h3_3 As Integer, h4 As Integer, h5 As Integer

Dim s As Integer

Dim l1 As Integer, l2 As Integer, l3 As Integer, l3_3 As Integer, l4 As Integer, l5 As Integer

Dim step As Integer,step_b as integer

 

 

h3 = Int(Rnd * 255)  '界定初始HSL值

s = Int(Rnd * 56 + 200)

l3 = Int(Rnd * 100 + 65)

step = 25 '输入步长

step_b = 30

 

h2 = h3 - step

If (h2 < 0) Then

    h2 = 255 + h2

End If

h1 = h2 - step

If (h1 < 0) Then

    h1 = 255 + h1

End If

h3_3 = h3 + step

If (h3_3 > 255) Then

    h3_3 = h3_3 - 255

End If

h4 = h3 + step * 2

If (h4 > 255) Then

    h4 = h4 - 255

End If

h5 = h4 + step

If (h5 > 255) Then

    h5 = h5 - 255

End If

 

l2 = l3 - step_b

If (l2 < 0) Then

    l2 = 255 + l2

End If

l1 = l2 - step_b

If (l1 < 0) Then

    l1 = 255 + l1

End If

l3_3 = l3 + step_b

If (l3_3 > 255) Then

    l3_3 = l3_3 - 255

End If

l4 = l3 + step_b * 2

If (l4 > 255) Then

    l4 = l4 - 255

End If

l5 = l4 + step_b

If (l5 > 255) Then

    l5 = l5 - 255

End If

 

With myDocument.Shapes(1).Fill

    .ForeColor.RGB = RGB(HSL2R(h3, s, l3), HSL2G(h3, s, l3), HSL2B(h3, s, l3))

    .BackColor.RGB = RGB(HSL2R(h1, s, l3), HSL2G(h1, s, l3), HSL2B(h1, s, l3))

    .TwoColorGradient msoGradientHorizontal, 1

    .GradientAngle = 60

End With

 

With myDocument.Shapes(2).Fill

    .ForeColor.RGB = RGB(HSL2R(h3, s, l3), HSL2G(h3, s, l3), HSL2B(h3, s, l3))

    .BackColor.RGB = RGB(HSL2R(h2, s, l3), HSL2G(h2, s, l3), HSL2B(h2, s, l3))

    .TwoColorGradient msoGradientHorizontal, 1

    .GradientAngle = 60

End With

 

With myDocument.Shapes(3).Fill

    .ForeColor.RGB = RGB(HSL2R(h3, s, l3), HSL2G(h3, s, l3), HSL2B(h3, s, l3))

    .BackColor.RGB = RGB(HSL2R(h3_3, s, l3_3), HSL2G(h3_3, s, l3_3), HSL2B(h3_3, s, l3_3))

    .TwoColorGradient msoGradientHorizontal, 1

    .GradientAngle = 60

End With

   

With myDocument.Shapes(4).Fill

    .ForeColor.RGB = RGB(HSL2R(h3, s, l3), HSL2G(h3, s, l3), HSL2B(h3, s, l3))

    .BackColor.RGB = RGB(HSL2R(h4, s, l3), HSL2G(h4, s, l3), HSL2B(h4, s, l3))

    .TwoColorGradient msoGradientHorizontal, 1

    .GradientAngle = 60

End With

 

With myDocument.Shapes(5).Fill

    .ForeColor.RGB = RGB(HSL2R(h3, s, l3), HSL2G(h3, s, l3), HSL2B(h3, s, l3))

    .BackColor.RGB = RGB(HSL2R(h5, s, l3), HSL2G(h5, s, l3), HSL2B(h5, s, l3))

    .TwoColorGradient msoGradientHorizontal, 1

    .GradientAngle = 60

End With

 

With myDocument.Shapes(6).Fill

    .ForeColor.RGB = RGB(HSL2R(h3, s, l3), HSL2G(h3, s, l3), HSL2B(h3, s, l3))

    .BackColor.RGB = RGB(HSL2R(h3, s, l1), HSL2G(h3, s, l1), HSL2B(h3, s, l1))

    .TwoColorGradient msoGradientHorizontal, 1

    .GradientAngle = 60

End With

   

 

With myDocument.Shapes(7).Fill

    .ForeColor.RGB = RGB(HSL2R(h3, s, l3), HSL2G(h3, s, l3), HSL2B(h3, s, l3))

    .BackColor.RGB = RGB(HSL2R(h3, s, l2), HSL2G(h3, s, l2), HSL2B(h3, s, l2))

    .TwoColorGradient msoGradientHorizontal, 1

    .GradientAngle = 60

End With

 

 

With myDocument.Shapes(8).Fill

    .ForeColor.RGB = RGB(HSL2R(h3, s, l3), HSL2G(h3, s, l3), HSL2B(h3, s, l3))

    .BackColor.RGB = RGB(HSL2R(h3, s, l3_3), HSL2G(h3, s, l3_3), HSL2B(h3, s, l3_3))

    .TwoColorGradient msoGradientHorizontal, 1

    .GradientAngle = 60

End With

 

 

With myDocument.Shapes(9).Fill

    .ForeColor.RGB = RGB(HSL2R(h3, s, l3), HSL2G(h3, s, l3), HSL2B(h3, s, l3))

    .BackColor.RGB = RGB(HSL2R(h3, s, l4), HSL2G(h3, s, l4), HSL2B(h3, s, l4))

    .TwoColorGradient msoGradientHorizontal, 1

    .GradientAngle = 60

End With

 

 

With myDocument.Shapes(10).Fill

    .ForeColor.RGB = RGB(HSL2R(h3, s, l3), HSL2G(h3, s, l3), HSL2B(h3, s, l3))

    .BackColor.RGB = RGB(HSL2R(h3, s, l5), HSL2G(h3, s, l5), HSL2B(h3, s, l5))

    .TwoColorGradient msoGradientHorizontal, 1

    .GradientAngle = 60

End With


End Sub

 

Function CAL(v1, v2, v3)

If (v3 < 0) Then v3 = v3 + 1

If (v3 > 1) Then v3 = v3 - 1

If (v3 * 6 < 1) Then

    CAL = v1 + (v2 - v1) * 6 * v3

ElseIf (v3 * 2 < 1) Then

    CAL = v2

ElseIf (v3 * 3 < 2) Then

    CAL = v1 + (v2 - v1) * ((2 / 3) - v3) * 6

Else

    CAL = v1

End If

End Function


Function HSL2R(h, s, l)

Dim convert_h As Double, convert_s As Double, convert_l As Double

Dim temp_1 As Double, temp_2 As Double

convert_h = h / 255

convert_s = s / 255

convert_l = l / 255

 

If (s = 0) Then

    HSL2R = l

Else

    If (convert_l < 0.5) Then

    temp_2 = convert_l * (1 + convert_s)

    Else

    temp_2 = (convert_l + convert_s) - (convert_s * convert_l)

    End If

    temp_1 = convert_l * 2 - temp_2

    HSL2R = 255 * CAL(temp_1, temp_2, convert_h + (1 / 3))

End If

End Function


Function HSL2G(h, s, l)

Dim convert_h As Double, convert_s As Double, convert_l As Double

Dim temp_1 As Double, temp_2 As Double

convert_h = h / 255

convert_s = s / 255

convert_l = l / 255

 

If (s = 0) Then

    HSL2G = l

Else

    If (convert_l < 0.5) Then

    temp_2 = convert_l * (1 + convert_s)

    Else

    temp_2 = (convert_l + convert_s) - (convert_s * convert_l)

    End If

    temp_1 = convert_l * 2 - temp_2

    HSL2G = 255 * CAL(temp_1, temp_2, convert_h)

End If

End Function


Function HSL2B(h, s, l)

Dim convert_h As Double, convert_s As Double, convert_l As Double

Dim temp_1 As Double, temp_2 As Double

convert_h = h / 255

convert_s = s / 255

convert_l = l / 255

 

If (s = 0) Then

    HSL2B = l

Else

    If (convert_l < 0.5) Then

    temp_2 = convert_l * (1 + convert_s)

    Else

    temp_2 = (convert_l + convert_s) - (convert_s * convert_l)

    End If

    temp_1 = convert_l * 2 - temp_2

    HSL2B = 255 * CAL(temp_1, temp_2, convert_h - (1 / 3))

End If

End Function

 


编程完毕后播放幻灯片,

效果就出现了。

简历模板


详细操作教程


整个设计的制作拆解为4个部分进行讲解,

以下为详细操作视频:


源文件分享


本文源文件已打包,

后台回复【渐变生成器】即可下载。


内容来源说明:本文章来自网络收集,如侵犯了你的权益,请联系QQ:310603354 进行删除。