图表的渲染,除了着色外,还有设置透明度、纹理映射、添加光照和设置材质等内容。本节进一步进行介绍。[大谦Excel,dqexcel点com]
透明度
将图形对象设置为半透明在三维可视化中是一个很有用的技巧。它使用户不仅能看到对象的外观,还能看到对象内部的结构特征。
使用FillFormat对象和LineFormat对象的Transparency属性可以设置面和线的透明度。图1-9中设置复合柱状图中第一个序列的透明度为0.5,为半透明。
纹理映射
纹理映射技术将二维图像映射到曲面对象上。Excel中面的图片填充和纹理填充都是纹理映射技术的应用。
使用FillFormat对象的UserPicture方法进行图片填充。使用FillFormat对象的UserTextured方法进行纹理填充。前者通过拉伸图像对指定面进行填充,后者通过平铺和裁剪进行填充。图1-12介绍了对复合柱状图的不同序列进行图片填充和纹理填充的实现。
光照和材质
添加光照使图形场景更加真实,这一点是通过模拟自然光下对象的明暗色调来实现的。这里,自然光也就是阳光。Excel中可以对三维对象设置光照。另外还可以设置对象的材质,如金属材质、塑料材质等。
编程实现时,引用某些对象的ThreeD属性返回一个三维对象,设置该对象的跟光照和材质有关的属性可进行设置。
特效:阴影
Excel可以给图表中的对象添加阴影,可以设置阴影的方向、颜色、透明度、大小、模糊程度、角度和跟对象之间的距离。
本例创建简单柱状图和复合线形图,给它们添加阴影。完整代码见:Samples->ch04 美化Excel图表->21 特效:阴影->py.py。
Sub Test()
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$2:$B$7")
ActiveChart.FullSeriesCollection(1).Select
Selection.Format.Shadow.Type = msoShadow21
With Selection.Format.Shadow
.Type = msoShadow21 ‘阴影类型
.Visible = msoTrue ‘阴影可见
.Style = msoShadowStyleOuterShadow ‘阴影样式msoShadowStyleOuterShadow
.Blur = 4 ‘阴影的模糊度
.OffsetX = 4.9497474683 ‘水平向偏移
.OffsetY = 4.9497474683 ‘垂向偏移
.RotateWithShape = msoFalse ‘不旋转
.ForeColor.RGB = RGB(0, 0, 0) ‘颜色
.Transparency = 0.599999994 ‘透明度
.Size = 100 ‘大小
End With
Range("A2:C11").Select ‘数据
‘生成第2个图表,为复合线形图
ActiveSheet.Shapes.AddChart2(227, xlLine).Select
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$2:$C$11")
ActiveChart.FullSeriesCollection(2).Select ‘获取图表
Selection.Format.Shadow.Type = msoShadow24 ‘序列1添加阴影
ActiveChart.FullSeriesCollection(1).Select
Selection.Format.Shadow.Type = msoShadow24 ‘序列2添加阴影
End Sub
运行代码生成图1-28和图1-29。
图1-29 给折线添加阴影
特效:发光
Excel可以给图表中的二维对象添加发光特效,可以设置光影的方向、颜色、透明度和大小。
本例创建简单柱状图和复合线形图,给它们添加发光特效。完整代码见:Samples->ch04 美化Excel图表->22 特效:发光->py.py。
Sub Test()'
‘柱状图
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$2:$B$7")
ActiveChart.FullSeriesCollection(1).Select
With Selection.Format.Glow
.Color.ObjectThemeColor = msoThemeColorAccent1
.Color.TintAndShade = 0
.Color.Brightness = 0
.Transparency = 0.6000000238
.Radius = 8
End With
‘线形图
ActiveSheet.Shapes.AddChart2(227, xlLine).Select
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$2:$C$11")
ActiveChart.FullSeriesCollection(2).Select
With Selection.Format.Glow
.Color.ObjectThemeColor = msoThemeColorAccent2 ‘msoThemeColorAccent1颜色
.Color.TintAndShade = 0
.Color.Brightness = 0 ‘亮度
.Transparency = 0.6000000238 ‘透明度
.Radius = 8 ‘半径
End With
ActiveChart.FullSeriesCollection(1).Select
With Selection.Format.Glow ‘给序列2添加发光特效
.Color.ObjectThemeColor = msoThemeColorAccent1
.Color.TintAndShade = 0
.Color.Brightness = 0
.Transparency = 0.6000000238
.Radius = 5
End With
End Sub
运行代码生成图1-30和图1-31。
图1-31 给折线添加发光特效
特效:边缘柔化
Excel可以给图表中的二维对象添加边缘柔化特效。
本例创建简单柱状图,给它添加边缘柔化特效。完整代码见:Samples->ch04 美化Excel图表->23 特效:边缘柔化->py.py。
Sub Test()
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$2:$B$7") ‘数据
ActiveChart.FullSeriesCollection(1).Select ‘获取图表
Selection.Format.SoftEdge.Radius = 3 ‘边缘柔化
End Sub
运行代码生成图1-32。
图1-32
特效:三维效果
Excel可以给图表中的某些对象添加三维特效。1.4.3小节介绍的光照和材质是三维特效的一部分。此外还可以改变三维对象顶部和底部的形状及其宽度和高度。
本例创建简单柱状图,给它添加三维特效。完整代码见:Samples->ch04 美化Excel图表->24 特效:三维效果->py.py。
Sub Test()
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$2:$B$7")
ActiveChart.FullSeriesCollection(1).Select
With Selection.Format.ThreeD
.BevelTopType = msoBevelAngle ‘柱面顶部斜面类型
.BevelTopInset = 6 ‘顶部斜面厚度
.BevelTopDepth = 6 ‘顶部斜面深度
End With
ActiveChart.ChartArea.Select
ActiveChart.FullSeriesCollection(1).Select
Selection.Format.ThreeD.PresetMaterial = msoMaterialClear ‘使用预设材质
ActiveChart.ChartArea.Select
ActiveSheet.Shapes(1).ThreeD.LightAngle = 60 ‘设置光照角度
ActiveSheet.Shapes(1).ThreeD.PresetLighting = msoLightRigMorning ‘设置预设光照
End Sub
运行代码生成图1-33。
图1-33