Код у автора страшненький, поэтому дам свою универсальную функцию:
| Код | 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 |
Как ей пользоваться - должно быть интуитивно понятно. |