Spread Studio for .NET使用教程:创建自定义复合形
shape classes形状类的一个的固有功能就是能够将其他形状对象嵌入其中。这个功能用来创建复合形状是非常适合的。这篇文章解释了如何创建一个用来作为水印的内置多个形状的自定义复合形状,该复合形状水印将会以如下图所示的方式进行显示(并不会妨碍或者遮挡电子表格本身)。
下面就是具体的示例:
要创建这个自定义复合形,需要先定义一个叫做CompanyWatermark的自定义形状类,并设置属性来自定义外形。这个自定义形状融合了多种元素:一个从指定颜色到透明的渐变褪色背景;嵌入的形状中包含了一个公司标志;一个单独的嵌入式文本形状用来拼写成公司名称;一个文本形状提供额外的信息,比如网址、公司的座右铭或安全等级。
派生自定义类
首先从表针的RectangleShape类中开始派生类。这将创建一个矩形区域用来嵌入形状。当然也可以使用其他形状如椭圆形或多边形,但是这样的话嵌入图形有可能被剪切剪(因为嵌入的形状不能超过被嵌入形状的边界)。下面是代码:
[C#]
public class CompanyWatermark : FarPoint.Win.Spread.DrawingSpace.RectangleShape
[Visual Basic .NET]
Public Class CompanyWatermark Inherits FarPoint.Win.Spread.DrawingSpace.RectangleShape
设置属性
然后创建访问内部形状的属性。创建复合形的好处之一就是可以隐藏许多嵌入图形的不必要属性。可以通过自定义属性设置只公开相关的信息。第一个属性是“CompanyColor”属性。这是背景渐变的主要颜色,主要形状会逐渐褪变成透明。它也是支持透明图片的,以便不完全遮挡电子表格。其它属性如决定渐变方向和渐变类型的Style,也可以一起进行设置。在这个例子中使用的是GradientStyle.TopDown风格。
接下来的属性是一个叫CompanyLogo的图像属性。这个属性是用来设置嵌入商标logo将要显示的图形。这个示例将商标形状锁定在了水印的左上角。可以轻松的通过属性设置来对齐标志。
嵌入文本形状
最重要的水印部分是公司名称。你可以使用嵌入的TextShape对象来代表显示公司名称。它将作为字符串显示在水印形状的CompanyName属性中。有许多TextShape类的可定制功能都可以显示,如字体或字体颜色,但是这个地方默认不显示。同样,为了简单起见,这个示例中的公司名称是锁定在水印形状的中间。
最后,还有一个二级TextShape对象包含一些在水印中的其它文本信息。这些信息可能是一个公司的座右铭,口号,网址甚至是像“CONFIDENTIAL”或“Copyright 2005”这样的单词。这个示例中将它们放到了水印形状的左下角。许多其它属性都可以在此嵌入形状中进行设置。这个例子只显示了其中的一部分。这个形状的文本显示为“CompanyText”属性。
结论
在上图中,你可以看到CompanyWatermark类的全面实施。选择"System.Drawing.Colors.SeaGreen"作为"CompanyColor",一个自定义位图作为“CompanyLogo”、"SunRay Finance"作为 "CompanyName"、"CONFIDENTIAL"作为“CompanyText”。
因为Spread可以滚动视图窗格,重载Spread的TopChange和LeftChange事件,移动现有工作表的水印,以便它总是出现在顶部,并且和spreadsheet控件的宽度一致。还需重写水印类的Top和Left属性使嵌入对象总是在水印中可见。
TextShape类的其中一个功能是使用相关联的字体使文本复合形状的大小。在这个示例中已经使用MeasureText方法进行了改变。文本字符串通过使用控件的TextShape对象和当前的字体进行大小调整,然后设置相应TextShape维度。这保证了形状保持大小,与指定的字体和字体大小相一致。