【问题标题】:Animate Panel Width Depending on Number of Seconds Provided动画面板宽度取决于提供的秒数
【发布时间】:2019-01-11 09:09:28
【问题描述】:

是否可以将面板宽度设置为 3 秒或取决于我在方法/函数上传递的秒数?

我目前正在使用计时器来更改宽度,但它没有特定的秒数来完成动画。

这是我当前的代码:

Private Sub Button1_Click()
    Timer1.Enabled = True
End Sub

Private Sub Timer1_Tick()
    If Panel1.Width < 50 Then
        Panel1.Width += 10
    Else
        Me.Dispose()
        Timer1.Enabled = Flase
    End If
End Sub

我想要的是有这样的功能

Private Sub AnimateWidth(ByRef pnl As Panel, ByVal MaxWidth As Integer, ByVal NumberOfSeconds as Double)
    'This is where I'm Lost. I dont have any idea what to do
End Sub

【问题讨论】:

  • 这是基础数学,我指的是小学的东西。您有许多像素要移动,还有几秒钟要移动。那些是固定的。变量是TimerInterval,它决定了每秒Tick 事件的数量,以及每个Tick 上移动的像素数。您无需帮助即可确定这两个变量的哪些组合将为您提供所需的结果。
  • 您的意思是:您有一段时间(3 秒),您需要在这段时间内将您的面板扩展到一个特定的度量值,或者它应该增长到一个无限的度量值直到给定的时间间隔过去了吗?
  • @Jimi 是的,我希望它在 3 秒内扩展到特定的度量值。
  • @jmcilhinney 如果它是如此基本,那么为什么你不能展示和教我或任何会遇到这种问题的人,你知道,那些对编程如何完成非常陌生的人,而不是而不是向其他人展示你认为我对你有多么低劣。谢谢顺便说一句。
  • 因为我不是来给那些没有准备好独立思考的人喂食的。我特别评论指出这实际上不是编程问题,因此您是编程新手这一事实完全无关紧要。正如我所说,这是一道基础数学题,我敢打赌你对基础数学并不陌生。编写代码并不能解决问题。您应该在编写任何代码之前解决问题。你甚至没有尝试过这样做。这是简单的乘法和除法。如果你真的需要我教你怎么做,那你就有更大的问题了。

标签: vb.net animation width panel seconds


【解决方案1】:
Public Sub FadeIn(ByVal TotalSeconds As Single, ByRef frm As Form)
    If TotalSeconds = 0 Then
        frm.Opacity = 1
        Exit Sub
    End If
    Dim [then] As Double = DateAndTime.Timer
    Dim difference As Double = 0
    Do While difference < 1
        frm.Opacity = difference
        difference = (DateAndTime.Timer - [then]) / TotalSeconds
        System.Threading.Thread.Sleep(10)
    Loop
    frm.Opacity = 1
End Sub

【讨论】:

  • @jmcilhinney 我说的是这个爸爸。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多