Sub PaintColor(objName As Object, sigRedUp As Single, sigGreenUp As Single, sigBlueUp As Single, _
sigRedDn As Single, sigGreenDn As Single, sigBlueDn As Single)
'垂直渐变
On Error Resume Next
Dim objHeight As Single
Dim RedInfo As Single, GreenInfo As Single, BlueInfo As Single
Dim Red As Single, Green As Single, Blue As Single
objHeight = objName.ScaleHeight
RedInfo = (sigRedDn - sigRedUp) / objHeight
GreenInfo = (sigGreenDn - sigGreenUp) / objHeight
BlueInfo = (sigBlueDn - sigBlueUp) / objHeight
For i = 0 To objHeight - 1
Red = sigRedUp + i * RedInfo
Green = sigGreenUp + i * GreenInfo
Blue = sigBlueUp + i * BlueInfo
objName.ForeColor = RGB(Red, Green, Blue)
objName.Line (0, i)-(objName.ScaleWidth - 1, i)
Next i
End Sub
代码如上,如何把它改成水平渐变
------解决方案--------------------------------------------------------
Sub PaintColor(objName As Object, sigRedUp As Single, sigGreenUp As Single, sigBlueUp As Single, _
sigRedDn As Single, sigGreenDn As Single, sigBlueDn As Single)
'垂直渐变
On Error Resume Next
Dim objHeight As Single
dim objW as single
Dim RedInfo As Single, GreenInfo As Single, BlueInfo As Single
Dim Red As Single, Green As Single, Blue As Single
'objHeight = objName.ScaleHeight
objW = objName.Scalewidth
RedInfo = (sigRedDn - sigRedUp) / objHeight
GreenInfo = (sigGreenDn - sigGreenUp) / objHeight
BlueInfo = (sigBlueDn - sigBlueUp) / objHeight
For i = 0 To objW - 1
Red = sigRedUp + i * RedInfo
Green = sigGreenUp + i * GreenInfo
Blue = sigBlueUp + i * BlueInfo
objName.ForeColor = RGB(Red, Green, Blue)
' objName.Line (0, i)-(objName.ScaleWidth - 1, i)
objName.Line (i, 0)-(i,objName.Scaleheigjt - 1)
Next i
End Sub