四、页面过渡效果控件
这一节,象前一节一样,我们将仅讨论5个页面过渡效果控件之一(因为它们之间具有极大的相似性)。我将讨论渐变擦除过渡效果控件;请参考本文提供的示例代码来进一步了解这个控件与其它控件之间的区别。
该渐变擦除页面过渡控件(CCPageTransitition_GradientWipe)以一种与文本改进控件相似的方式开始。实现代码被划分成三个主要的区域:Declarations,Properties和Rendering。
该类声明部分看起来如下所示:
Imports System Imports System.Collections.Generic Imports System.ComponentModel Imports System.Text Imports System.Web Imports System.Web.UI Imports System.Web.UI.WebControls ''' <summary> ''' 过渡效果(仅适用于Internet Explorer) '''把这个控件拖动到一个页面上;当这个页面被退出时,下一个页面将会通过过渡 '''效果(Gradient Wipe)进行显示 ''' </summary> ''' <remarks></remarks> Public Class CCPageTransitition_GradientWipe Inherits WebControl Private Sub CCPageTransitition_GradientWipe_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init Me.Width = 20 Me.Height = 20 End Sub | 你会注意到,我们没有把System.Web.UI.Design导入到这个类中,因为对于这个控件来说,不存在可能的设计时刻可视化内容。你可能还注意到,该控件的初始化用来把该控件的高度和宽度设置为各自20个像素。这仅在设计时刻在页面的表单(一个空框)上创建一些指示时才需要。这个框在运行时刻不会出现在web表单上。
在类初始化之后,我添加了下面的Declarations区域。这个区域用于存储该类中的每一个private型成员变量。这个区域的声明看起来如下所示:
#Region "Declarations" Private mDuration As Single = 1 #End Region | 你可以看出,该类中只使用了一个私有成员变量。在Declarations区域后面,跟着的是Properties区域;它看上去如下所示:
#Region "Properties" <Category("Gradient Wipe Transition")> _ <Browsable(True)> _ <Description("Set the effect duration (typically 1 or 2)")> _ Public Property TransitionDuration() As Single Get Return mDuration End Get Set(ByVal value As Single) mDuration = value End Set End Property #End Region | 这个属性用于设置发生页面过渡效果的时间长度。下面,我们来看一下生成(redering)区域块的代码:
#Region "Rendering" Protected Overrides Sub RenderContents(ByVal writer As System.Web.UI.HtmlTextWriter) Try Dim sb As New StringBuilder sb.Append("<meta http-equiv='Page-Exit' ") sb.Append("content='progid:DXImageTransform. _ Microsoft.gradientWipe(duration=" & TransitionDuration.ToString() & ")' />") writer.RenderBeginTag(HtmlTextWriterTag.Div) writer.Write(sb.ToString()) writer.RenderEndTag() Catch ex As Exception writer.RenderBeginTag(HtmlTextWriterTag.Div) writer.Write("Gradient Wipe Transition Control") writer.RenderEndTag() End Try End Sub #End Region End Class | 这部分代码相当直接,RenderContents子例程被重载,新的内容被包括到一个try-catch块内。尽管我没有处理任何错误(在出现错误的情况下),我只把字符串"Gradient Wipe Transition Control"写到一个div中,作为一个可放置于此的控件的占位符。
在该try块内的代码仅使用一个字符串构建器来格式化我们想在运行时刻直接放到该web页面的源中的文本。该字符串构造器中包含的代码用于建立请求,从而把页面exit事件与页面过滤效果加以关联。你可能还注意到,duration属性被传递到字符串构造器用于设置过滤器使用的duration参数的值。
在配置该字符串构造器之后,该字符串构造器的内容被写到页面上。无论何时该示例类库中的这个或任何其它页面过渡控件被添加到一个页面,页面退出显示出同样的属性;结果是,无论何时用户离开该页面,下一个页面都将使用该过渡效果显示。
五、 结论
就此结束吧!其实,我还建议你研究一下其它的控件并逐个在测试网站中进行试验。还存在其它一些过滤效果和页面过渡可用,我想你一定希望进一步扩展这个库;同样,还有其它一些有关过滤的属性需要进一步讨论。最后,祝你编程愉快!
[上一页] [1] [2] [3]
|