MSChart 控件的三维特性

使用 MSChart 控件的三维图表特性可以使一个报表更富于光彩。

旋转图表

使用 CTRL 键和鼠标可以手工旋转一个 3D 图表。要做到这一点,首先一直按住 CTRL 键,单击图表,然后在图表图像上按住并拖动鼠标。下面的图形显示了旋转前和旋转后的同一张图表。

旋转前

旋转后

以编程方式旋转图表

也可以使用 View3D 对象的 Set 方法旋转 3D 图表。

MSChart1.Plot.View3D.Set 10,100

观看光照

除了旋转一个 3D 图表,还可以使用 Light 特性来控制一个虚拟的光线怎样照到图表上。实际上,图表的外观在旋转中会改变,因为在连续改变角度的过程中,它的表面会反射固定光源的光线。

缺省情况下,图表使用一个LightSource。下面的代码对影响LightSource的四个参数进行设置。这些将在后面解释。同时,请将这些代码粘贴到一个标准 EXE 工程中并运行这个工程。

Private Sub Form_Load()
   With MSChart1
      .chartType = VtChChartType3dArea
      .Plot.Light.LightSources(1).Set 10, 10, 10, 1
   End With
End Sub

通过这些代码可以得到一个看上去在屏幕的左下角有一个光源照射的图表。当旋转图表时,直接面对光线的表面会变得更亮。

光的基本要素

LightSource 特性由两部分组成:

环境光

使用LightSource时,环境光的影响是很显著的。环境光只是均匀地照在图表上,没有特定的方向。可以将 AmbientIntensity 属性设为 0 与 1 之间的任意值,0 关掉光,1使光增强到最大值。例如,要将环境光设为其亮度的四分之一,可以将 AmbientIntensity 属性设为.25。

提示 在用LightSources实验时,将此特性设为 0 会很有用。没有环境光时,LightSource的效果会被加强。

EdgeVisible 和 EdgeIntensity 属性结合在一起用于突出图表的边界。当 AmbientIntensity 属性设为一个较低的值时,可以将 EdgeIntensity 属性设为一个较高的值。结果是边界看上去象在发光,如下图所示:

LightSources

在LightSources集合中的每一个LightSource都有一个Intensity属性(象 AmbientIntensity 属性一样),可以将其设为 0 与 1 之间的值。这一属性设置每个独立LightSource的亮度。

也可以通过设置 X、Y 和 Z 属性将每一个LightSource放置在图表周围的虚拟空间中。通过改变这些属性,可以指定光线照在图表上的方向。

使用 Add 方法添加一个LightSource

缺省情况下,MSChart 只包含LightSources集合中的一个LightSource成员。但通过 Add 方法,可以添加LightSource成员,如下所示:

MSChart1.Plot.Light.LightSources.Add 10, 10, 10, 1

Add 方法的参数包括可以具体指定光照角度的 X、Y、Z值和光照强度的值。