科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件ASP.NET2.0中实现图像转换过滤效果

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文描述一种创建定制Web控件的容易方法,并把该控件使用于一个ASP.NET 2.0 web页面中显示微软DirectX图像转换过滤效果。

作者:朱先忠编译 来源:天极软件 2007年11月6日

关键字: Windows

  • 评论
  • 分享微博
  • 分享邮件
四、页面过渡效果控件

  这一节,象前一节一样,我们将仅讨论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参数的值。

  在配置该字符串构造器之后,该字符串构造器的内容被写到页面上。无论何时该示例类库中的这个或任何其它页面过渡控件被添加到一个页面,页面退出显示出同样的属性;结果是,无论何时用户离开该页面,下一个页面都将使用该过渡效果显示。

  五、 结论

  就此结束吧!其实,我还建议你研究一下其它的控件并逐个在测试网站中进行试验。还存在其它一些过滤效果和页面过渡可用,我想你一定希望进一步扩展这个库;同样,还有其它一些有关过滤的属性需要进一步讨论。最后,祝你编程愉快!

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章