Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > форма с плавным переходом цвета фона


Автор: werta 26.11.2006, 23:03
от красного к белому: 

Код

Private Sub Form_Initialize()
Dim x As Long
Dim Текст As String
For x = 0 To ScaleWidth
ForeColor = RGB(255, (255 * x / ScaleWidth), (255 * x / ScaleWidth))
Line (x, 0)-(x, ScaleWidth)
Next x
End Sub

Private Sub Form_Load()
Show
End Sub


а от белого к красному   smile  smile 
спасибо!

Автор: cardinal 26.11.2006, 23:51
Поменяй строку в середине цикла на
Код

Line (ScaleWidth-x, 0)-(ScaleWidth-x, ScaleWidth)


Автор: werta 27.11.2006, 00:28
cardinal, спасибо большое!!!  smile 

Автор: BorisVorontsov 27.11.2006, 07:08
Код у автора страшненький, поэтому дам свою универсальную функцию:

Код
Public Sub GradientFill(ByVal hCanvas As Object, ByVal lR As Long, ByVal lG As Long, ByVal lB As Long, _
    ByVal lR2 As Long, ByVal lG2 As Long, ByVal lB2 As Long, Optional ByVal bVertical As Boolean = True)
    Dim W As Long, H As Long
    Dim lOutR As Long, lOutG As Long, lOutB As Long
    Dim i As Long, n As Long
    Dim lStart As Long, lEnd As Long
    W = hCanvas.ScaleWidth
    H = hCanvas.ScaleHeight
    lStart = 0
    lEnd = IIf(bVertical, H, W)
    For n = lStart To lEnd Step IIf(bVertical, Screen.TwipsPerPixelX, _
        Screen.TwipsPerPixelY)
        lOutR = lR + (lR2 - lR) / (lEnd - lStart) * (n - lStart)
        lOutG = lG + (lG2 - lG) / (lEnd - lStart) * (n - lStart)
        lOutB = lB + (lB2 - lB) / (lEnd - lStart) * (n - lStart)
        If bVertical Then
            hCanvas.Line (0, n)-(W, n), RGB(lOutR, lOutG, lOutB)
        Else
            hCanvas.Line (n, 0)-(n, H), RGB(lOutR, lOutG, lOutB)
        End If
    Next n
End Sub


Как ей пользоваться - должно быть интуитивно понятно.

Автор: werta 27.11.2006, 11:22
BorisVorontsov , Вам тоже огромное спасибо! 
я же только учюсь

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)