ColorToRGB (VFP)
From codeWiki
Por: VictorEspina
VFP contiene una función nativa para obtener el valor numérico de un color a partir de sus componentes Rojo, Verde y Azul. Esta función se llama RGB() y su sintáxis es:
nColor = RGB(rojo,verde,azul)
Cada valor para los componentes Rojo, Verde y Azul puede ir desde cero (ausencia de ese color en particular) hasta 255 (maxima saturacion del color).
Lo que no ofrece VFP es una forma de conocer los valores individuales de cada color a partir del valor numérico del color obtenido con RGB. La función ColorToRGB() hace exactamente esto:
* ColorToRGB * Devuelve un objeto con los componentes * individuales de un color dado * FUNCTION ColorToRGB(pnColor) * LOCAL oRGB oRGB=CREATEOBJECT("Custom") oRGB.AddProperty("Red",0) oRGB.AddProperty("Green",0) oRGB.AddProperty("Blue",0) oRGB.AddProperty("StringValue","") LOCAL nExp,nBase,nRest,nValue LOCAL ARRAY aValues[3] nRest = pnColor FOR nExp=2 TO 0 STEP -1 nBase = 256 ^ nExp nValue = INT(nRest / MAX(1,nBase) ) aValues[nExp + 1]=nValue nRest = nRest - (nValue * nBase) ENDFOR oRGB.Red = aValues[1] oRGB.Green = aValues[2] oRGB.Blue = aValues[3] oRGB.StringValue = ALLT(STR(oRGB.Red))+","+ALLT(STR(oRGB.Green))+","+ALLT(STR(oRGB.Blue)) RETURN oRGB * ENDFUNC
LOCAL nColor nColor = RGB(255,240,40) LOCAL oRGB oRGB = ColorToRGB(nColor) ?oRGB.Red --> 255 ?oRGB.Green --> 240 ?oRGB.Blue --> 40 ?oRGB.StringValue --> "255,240,40"