MyScrollBar.vb 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. Public Class MyScrollBar
  2. Inherits Primitives.ScrollBar
  3. '基础
  4. Public Uuid As Integer = GetUuid()
  5. '指向动画
  6. Private Sub RefreshColor() Handles Me.IsEnabledChanged, Me.GotMouseCapture, Me.LostMouseCapture, Me.MouseEnter, Me.MouseLeave, Me.IsVisibleChanged
  7. Try
  8. '判断当前颜色
  9. Dim NewOpacity As Double, NewColor As String, Time As Integer
  10. If Not IsVisible Then
  11. NewOpacity = 0
  12. Time = 20 '防止错误的尺寸判断导致闪烁
  13. NewColor = "ColorBrush4"
  14. ElseIf IsMouseCaptureWithin Then
  15. NewOpacity = 1
  16. NewColor = "ColorBrush4"
  17. Time = 50
  18. ElseIf IsMouseOver Then
  19. NewOpacity = 0.9
  20. NewColor = "ColorBrush3"
  21. Time = 130
  22. Else
  23. NewOpacity = 0.5
  24. NewColor = "ColorBrush4"
  25. Time = 180
  26. End If
  27. '触发颜色动画
  28. If IsLoaded AndAlso AniControlEnabled = 0 Then '防止默认属性变更触发动画
  29. '有动画
  30. AniStart({
  31. AaColor(Me, ForegroundProperty, NewColor, Time),
  32. AaOpacity(Me, NewOpacity - Opacity, Time)
  33. }, "MyScrollBar Color " & Uuid)
  34. Else
  35. '无动画
  36. AniStop("MyScrollBar Color " & Uuid)
  37. SetResourceReference(ForegroundProperty, NewColor)
  38. Opacity = NewOpacity
  39. End If
  40. Catch ex As Exception
  41. Logger.Warn(ex, "滚动条颜色改变出错")
  42. End Try
  43. End Sub
  44. End Class