科技时代新浪首页 > 科技时代 > 学园 > 正文

ASP.NET2.0中实现图像转换过滤效果(3)


http://www.sina.com.cn 2006年09月22日 09:01 天极yesky

  四、页面过渡效果控件

  这一节,象前一节一样,我们将仅讨论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]

本文导航:
·ASP.NET2.0中实现图像转换过滤效果
·ASP.NET2.0中实现图像转换过滤效果(2)
·ASP.NET2.0中实现图像转换过滤效果(3)

发表评论

爱问(iAsk.com) 相关网页共约531



评论】【论坛】【收藏此页】【 】【多种方式看新闻】【下载点点通】【打印】【关闭




科技时代意见反馈留言板 电话:010-82628888-5595   欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

Copyright © 1996 - 2006 SINA Inc. All Rights Reserved

新浪公司 版权所有