Solo basta con ejecutar este código, situar el mouse sobre el color que nos interese para ver el codigo en RGB (nRojo,nVerde, nAzul) que deberemos usar, o también el Hexagecimal para usarlo en codigo HTML.
Public oForm oForm=Newobject("Toma_Color") oForm.Show(1) Return Define Class Toma_Color As Form Height = 30 Width = 350 ShowWindow = 2 DoCreate = .T. AutoCenter = .T. BorderStyle = 2 Caption = "Toma-Color " ControlBox = .T. Closable = .T. HalfHeightCaption = .T. MaxButton = .F. MinButton = .F. ClipControls = .F. TitleBar = 1 AlwaysOnTop = .T. Name = "Frm_Toma_Color" Add Object ColorHex As TextBox With ; Height = 25, ; Left = 33, ; Top = 2, ; Width = 108, ; Name = "ColorHex" Add Object timer1 As Timer With ; Top = 3, ; Left = 3, ; Height = 23, ; Width = 23, ; Interval = 500, ; Name = "Timer1" Add Object shape1 As Shape With ; Top = 2, ; Left = 3, ; Height = 24, ; Width = 24, ; Name = "Shape1" Add Object lrojo As Label With ; AutoSize = .T., ; FontBold = .T., ; BackStyle = 0, ; Caption = "R", ; Height = 17, ; Left = 158, ; Top = 6, ; Width = 10, ; Name = "lRojo" Add Object lverde As Label With ; AutoSize = .T., ; FontBold = .T., ; BackStyle = 0, ; Caption = "G", ; Height = 17, ; Left = 226, ; Top = 6, ; Width = 10, ; Name = "lVerde" Add Object lazul As Label With ; AutoSize = .T., ; FontBold = .T., ; BackStyle = 0, ; Caption = "B", ; Height = 17, ; Left = 294, ; Top = 6, ; Width = 10, ; Name = "lAzul" Add Object larojo As Label With ; AutoSize = .T., ; BackStyle = 0, ; Caption = "#", ; Height = 17, ; Left = 149, ; Top = 6, ; Width = 9, ; ForeColor = Rgb(255,0,0), ; Name = "larojo" Add Object laverde As Label With ; AutoSize = .T., ; BackStyle = 0, ; Caption = "#", ; Height = 17, ; Left = 216, ; Top = 6, ; Width = 9, ; ForeColor = Rgb(0,255,0), ; Name = "laVerde" Add Object laazul As Label With ; AutoSize = .T., ; BackStyle = 0, ; Caption = "#", ; Height = 17, ; Left = 284, ; Top = 6, ; Width = 9, ; ForeColor = Rgb(0,0,255), ; Name = "laAzul" Add Object color_r As TextBox With ; Format = "LK", ; Height = 23, ; InputMask = "999", ; Left = 168, ; Top = 3, ; Width = 41, ; Name = "Color_R" Add Object color_g As TextBox With ; Format = "LK", ; Height = 23, ; InputMask = "999", ; Left = 238, ; Top = 3, ; Width = 41, ; Name = "Color_G" Add Object color_b As TextBox With ; Format = "LK", ; Height = 23, ; InputMask = "999", ; Left = 305, ; Top = 3, ; Width = 41, ; Name = "Color_B" Procedure buf2word Lparameters cBuffer Return Asc(Substr(cBuffer, 1,1)) +; BitLShift(Asc(Substr(cBuffer, 2,1)), 8)+; BitLShift(Asc(Substr(cBuffer, 3,1)), 16)+; BitLShift(Asc(Substr(cBuffer, 4,1)), 24) Endproc Procedure convertir_color * Funcion Tomada de http://www.portalfox.com/article.php?sid=534 * Enviada Por Luis Maria Guayan * Adaptada Para Obtener el Color en Hexagecimal * o la cantidad de Rojo, verde o Azul Lparameters nColor, nNumero Local cResult, nCiclo cResult= "#" For nCiclo= 1 To 3 cResult= cResult+ Right(Transform(nColor%256,alltrim(" @0")),2) If nCiclo = nNumero Return (nColor %256) Endif nColor = Int(nColor/256) Endfor Return cResult Endproc Procedure Load Declare Long GetWindowDC In "user32" Long nHandle Declare Long GetPixel In "gdi32" Long hdc, Long nX, Long nY Declare Long GetCursorPos In "user32" String @cPuntero Declare Long GetDesktopWindow In "user32" Local cPos As String cPos= Space(20) GetCursorPos(@cPos) With This .AddProperty('hdc',GetWindowDC(GetDesktopWindow())) .AddProperty('nX',0) .AddProperty('nY',0) .nX=This.buf2word(Substr(cPos,1,4)) .nY=This.buf2word(Substr(cPos,5,4)) Endwith Endproc Procedure timer1.Timer Local cPos, nColor cPos =Space(20) GetCursorPos(@cPos) With Thisform .nX=.buf2word(Substr(cPos,1,4)) .nY=.buf2word(Substr(cPos,5,4)) nColor= GetPixel(.hdc,.nX,.nY) .shape1.BackColor = nColor .ColorHex.Value = .convertir_color(nColor,0) .color_r.Value = .convertir_color(nColor,1) .color_g.Value = .convertir_color(nColor,2) .color_b.Value = .convertir_color(nColor,3) Endwith Endproc Enddefine
Saludos.
Jorge Mota, Guatemala
No hay comentarios. :
Publicar un comentario
Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.