65.9K
CodeProject 正在变化。 阅读更多。
Home

异步颜色渐变

starIconstarIconemptyStarIconemptyStarIconemptyStarIcon

2.00/5 (6投票s)

2007年3月8日

CPOL

1分钟阅读

viewsIcon

28184

downloadIcon

686

这提供了一种以异步方式淡化任何颜色属性的简单方法。

引言

这是一个简单的类,包含一个共享方法,用于异步地将颜色属性从一种颜色淡化到另一种颜色。我需要一种方法来向用户指示他们已保存或删除了某些内容,因此我希望能够缓慢淡化文本框的背景颜色。

代码使用

共享方法有三个重载。基本方法接受七个参数

  • container - 包含要淡化的颜色属性的对象。例如,文本框或标签。
  • colorProperty - 要更改的颜色属性的名称 - 这必须是一个字符串,例如“ForeColor”或“BackColor”。
  • startColor - 将开始淡化的颜色。
  • endColor - 将结束淡化的颜色。
  • steps - 从开始颜色到结束颜色淡化所采取的步骤数。
  • delay - 淡化过程中每个步骤之间的延迟,以毫秒为单位。
  • callback - 一个可选函数,将在淡化完成后调用。

第二个重载接受一个中间颜色和淡化的步骤数,而最后一个重载接受一个颜色列表和步骤数。

问题

我希望直接传递颜色属性本身,并按引用 (byRef) 传递它,以便我可以更改它,但我不知道该怎么做。我不确定是否可以将按引用 (byRef) 参数传递给另一个线程。无论如何,这就是为什么该方法需要一个容器对象和要更改的属性的名称。

示例

Dim textBox1 As New TextBox() 
Visual.FadeColor(textBox1, "BackColor", Color.Green, Color.White, _
                 25, 25, AddressOf DoneFading)

Private Sub DoneFading(ByVal container As Object, ByVal colorProperty As String)
    MsgBox("Done fading!")
End Sub

结论

总的来说,它很简单,但希望对您有所帮助。如果您有任何建议,请随时告诉我。

© . All rights reserved.