Autor
|
Tema: Transformacion de un Color A otro sin el uso de API's (Leído 2,573 veces)
|
xmbeat92
Desconectado
Mensajes: 40
|
bien este es un code que uso en mis controles de usuario o en forms para hacerlo mas vistoso. publique hace algunos dias esto en el foro de leandro ascierto, y sabiendo que gran parte de usuarios del foro de leandro esta aqui pues lo cuelgo aqui ademas que tenia dos errores minimos y aqui presento la mini actualizacion. el code lo pueden editar para que se pueda hacer el degradado de forma horizontal o circular, alli esta la idea. 'By xmbeat 'to foro.elhacker.net/programacion VB
Private Function Color(Col As Long) As Integer() Const B As Long = 65536 'constante que es el resultado de 256 al Cuadrado Const G As Long = 256 Dim elRGB(2) As Integer Col = Abs(Col) 'aqui pueden usar el OleTranslateColor para usar los colores del sistema _ pero no lo use para no contradecir el titulo del post elRGB(2) = Col \ B 'hacemos la operacion inversa de la funcion RGB() elRGB(1) = (Col Mod B) \ G elRGB(0) = (Col Mod B) Mod G Color = elRGB End Function
Sub Gradient(Formulario As Object, Inicio As OLE_COLOR, Final As OLE_COLOR, Optional Min As Long = 0, Optional _ Max As Long = 256) With Formulario .AutoRedraw = True 'min es donde empezará a pintar y Max es donde terminará de hacerlo Dim I As Integer Dim Ini() As Integer Dim Fin() As Integer Dim Dif As Long Dim Ant As Long Dim R As Byte, G As Byte, B As Byte
On Error Resume Next Ant = .ScaleHeight .ScaleHeight = 256 Ini = Color(Inicio) Fin = Color(Final) Dif = Max - Min
For I = Min To Max R = Ini(0) + ((Fin(0) - Ini(0)) / Dif) * (I - Min) G = Ini(1) + ((Fin(1) - Ini(1)) / Dif) * (I - Min) B = Ini(2) + ((Fin(2) - Ini(2)) / Dif) * (I - Min) Formulario.Line (0, I)-(.ScaleWidth, I + 1), RGB(R, G, B), BF
Next I
.ScaleHeight = Ant End With End Sub
Private Sub Form_Resize() Const Text0 As String = "By Xmbeat" Gradient Me, RGB(80, 80, 80), vbBlack, , 100 Gradient Me, vbBlack, RGB(10, 19, 50), 100 Me.FontSize = 24 Me.FontBold = True Me.CurrentY = (Me.ScaleHeight - Me.TextHeight(Text0)) / 2 Me.CurrentX = (Me.ScaleWidth - Me.TextWidth(Text0)) / 2 Me.ForeColor = vbWhite Print Text0 End Sub
aqui el link del otro post: http://www.leandroascierto.com.ar/foro/index.php?topic=150.0espero la bienvenida a este foro.
|
|
« Última modificación: 5 Febrero 2010, 03:55 am por xmbeat92 »
|
En línea
|
El hombre encuentra a Dios detrás de cada puerta que la ciencia logra abrir. -Einstein
|
|
|
EddyW
|
Esta muy bueno Algo así hice hace tiempo, para un Form.. SaluDOS!!! PD: Bienvenido!!!
|
|
|
En línea
|
|
|
|
Sm0kes
Desconectado
Mensajes: 22
|
Genial esto esta bueno se mira cool el degradado pa una app xD..... Salu2s
|
|
|
En línea
|
|
|
|
cobein
|
Va la 2da vez que veo esto, ya lo vi de BlackZeroX cuando "optimizaba" un codigo.
Porque usan un Integer? "Dim elRGB(2) As Integer" el valor de retorno tiene que ser en bytes...
|
|
|
En línea
|
|
|
|
xmbeat92
Desconectado
Mensajes: 40
|
Va la 2da vez que veo esto, ya lo vi de BlackZeroX cuando "optimizaba" un codigo.
Porque usan un Integer? "Dim elRGB(2) As Integer" el valor de retorno tiene que ser en bytes...
si eso fue algo que se me paso sin querer, claro que lo pueden modificar, eso no es mucho de trascendecia
|
|
|
En línea
|
El hombre encuentra a Dios detrás de cada puerta que la ciencia logra abrir. -Einstein
|
|
|
xmbeat92
Desconectado
Mensajes: 40
|
bueno ademas estuve checkando y la funcion rgb que viene el visual, pide paramentros integer, bueno eso no es pretexto, pero ademas es mejor comerese 3 bytes para poder sumarles y restarles numeros sin que ocurra un error
|
|
|
En línea
|
El hombre encuentra a Dios detrás de cada puerta que la ciencia logra abrir. -Einstein
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
bueno ademas estuve checkando y la funcion rgb que viene el visual, pide paramentros integer, bueno eso no es pretexto, pero ademas es mejor comerese 3 bytes para poder sumarles y restarles numeros sin que ocurra un error
por eso yo también lo declare en integer jem Nota: Casi nos pega cobein xS
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
|
|