Мерцание экрана при смещении контролов - VB

Узнай цену своей работы

Формулировка задачи:

При смещении контролов, даже небольшого количества (пример - ниже), возникает мерцание экрана. Если их (контролов) ещё больше, то это превращается в проблему. Можно как-то это побороть?
Листинг программы
  1. Private Sub Form_Activate()
  2. 'îòêðûâГ*ГҐГ¬ îêГ*Г® Г*Г* ГўГҐГ±Гј ГЅГЄГ°Г*Г*
  3. Me.WindowState = vbMaximized
  4. LabelEx Label1, "H/2|=Гѓ\4|- b", 1
  5. LabelEx Label2, "H/2|=Гѓ\4|- b", 2
  6. End Sub
  7. Sub LabelEx(Label, S$, k)
  8. Dim I&, J&, C As String * 1
  9. Set Me.Font = Label(0).Font
  10. Label(0).Font = "arial"
  11. Label(0).FontSize = 36
  12. Label(0).Caption = ""
  13. Label(0).BackStyle = 0
  14. If k = 1 Then
  15. Label(0).Move ScaleWidth / 2 - Label(0).Width * 7, Label(0).Height
  16. ElseIf k = 2 Then
  17. Label(0).Move ScaleWidth / 2 - Label(0).Width * 7 + 3, Label(0).Height + 3
  18. End If
  19. Label(0).Width = 0
  20. Label(0).Height = Me.TextHeight(Label(0).Caption)
  21. For I = 1 To Len(S)
  22. C = Mid$(S, I, 1)
  23. Select Case C
  24. Case "|", "/", "\"
  25. J = J + 1
  26. If k = 1 Then
  27. Label(J - 1).ForeColor = &HFFFF&
  28. ElseIf k = 2 Then
  29. Label(J - 1).ForeColor = &H0&
  30. End If
  31.  
  32. Load Label(J)
  33. With Label(J)
  34. .Caption = ""
  35. .Visible = True
  36. .Left = Label(J - 1).Left + Label(J - 1).Width
  37. Select Case C
  38. Case "|" 'Г*îðìГ*ëüГ*ûé ГІГҐГЄГ±ГІ
  39. .Top = Label(0).Top
  40. .FontSize = Label(0).FontSize
  41. Case "\" 'Г*Г*äñòðî÷Г*ûé
  42. .Top = Label(0).Top - Label(0).Height / 2
  43. .FontSize = Label(0).FontSize * 2 / 3
  44. Case "/" 'ïîäñòðî÷Г*ûé
  45. .Top = Label(0).Top + Label(0).Height / 2
  46. .FontSize = Label(0).FontSize * 2 / 3
  47. End Select
  48. End With
  49. Case Else
  50. With Label(J)
  51. Set Me.Font = Label(J).Font
  52. .Caption = .Caption + C
  53. .Width = Me.TextWidth(.Caption)
  54. .Height = Me.TextHeight(.Caption)
  55. End With
  56. End Select
  57. Next I
  58. End Sub
  59.  
  60. Private Sub Form_Paint()
  61. 'Г§Г*ëèâГ*ГҐГ¬ îêГ*Г® ГЈГ°Г*äèåГ*òîì
  62. Dim lY As Long
  63. Dim lScaleHeight As Long
  64. Dim lScaleWidth As Long
  65. ScaleMode = vbPixels
  66. lScaleHeight = ScaleHeight
  67. lScaleWidth = ScaleWidth
  68. DrawStyle = vbInvisible
  69. FillStyle = vbFSSolid
  70. For lY = 0 To lScaleHeight
  71. FillColor = RGB(32, 178 - (lY * 120) \ lScaleHeight, 170 - (lY * 120) \ lScaleHeight)
  72. Line (-1, lY - 1)-(lScaleWidth, lY + 1), , B
  73. Next lY
  74. End Sub
И ещё, отчего здесь на первом символе "тень" получается сверху?

Решение задачи: «Мерцание экрана при смещении контролов»

textual
Листинг программы
  1. .Visible = True

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы