|
Página 1 de 2
|
[SOLUCIONADO] Extraer Propiedades De Un Color
Autor |
Mensaje |
Grandamakulo
Analista Programador
Registrado: Enero 2016
Mensajes: 311
Edad: 55 Ubicación: En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...
|
[SOLUCIONADO] Extraer Propiedades De Un Color
Hola de nuevo, compañeros.
Pues se trata de eso, del asunto. Cómo obtener Rojo, Azul, Verde, Luminancia, Matiz, Saturación y Valor a partir de un entero que representa un color.
Veo que se puede hacer con Colorinfo, aunque la ayuda de éste dice que es más rápido con SetHSV o SetRGB. Primero, que Colorinfo no admite un entero como argumento, sino un color. Pero para obtener un color tengo que separar el entero en sus componentes RGB o HSV. Segundo, SetHSV o SetRGB no devuelve estos valores. Creo.
En fin, lo estoy haciendo así para RGB y Luminancia:
Dim bRojo As Byte
Dim bVerde As Byte
Dim bAzul As Byte
Dim bLuminancia As Byte
bRojo = (Colorfondo And &FF0000) / 256 / 256 ' 65536
bVerde = (Colorfondo And &H00FF00) / 256
bAzul = Colorfondo And &FF
bLuminancia = 0.299 * bRojo + 0.587 * bVerde + 0.114 * bAzul
Pero no sé cómo hacerlo para HSV.
¿Cómo solucionarlo para HSV?¿Hay alguna función de color que resuelva todo esto sin tanta parafernalia?
Gracias de antemano.
última edición por Grandamakulo el Lunes, 02 Septiembre 2019, 21:02; editado 2 veces
|
#1 Domingo, 01 Septiembre 2019, 20:14 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Extraer Propiedades De Un Color
¿Has explorado la clase Color? Dispones de los métodos RGB, setRGB, HSV, setHSV, setAlpha otros.
=================== No podemos regresar
|
#2 Domingo, 01 Septiembre 2019, 20:32 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Extraer Propiedades De Un Color
Colorinfo no admite un entero como argumento, sino un color.
Siempre se puede rapresentar un "Color" por un entero y viceversa.
Exemplum:
Página sugerida:
https://www.gambas-it.org/wiki/inde...lasse_ColorInfo
última edición por vuott el Lunes, 02 Septiembre 2019, 10:39; editado 2 veces
|
#3 Lunes, 02 Septiembre 2019, 00:20 |
|
|
Grandamakulo
Analista Programador
Registrado: Enero 2016
Mensajes: 311
Edad: 55 Ubicación: En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...
|
Re: Extraer Propiedades De Un Color
Hola, de nuevo:
Shordi, sí, la había explorado, lo mismo que ColorInfo.
Voutt, como dijo el dramaturgo, «el dedo en la llaga con gran tino puesto habéis...». Efectivamente, eso es. Mi problema es que usaba mal ColorInfo, al que le pasaba directamente el entero en lugar de a través de un «Color».
¡Perfectamente solucionado!
Muchas gracias.
|
#4 Lunes, 02 Septiembre 2019, 21:01 |
|
|
Grandamakulo
Analista Programador
Registrado: Enero 2016
Mensajes: 311
Edad: 55 Ubicación: En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...
|
Re: [SOLUCIONADO] Extraer Propiedades De Un Color
PS.—¿Y para qué, os preguntaréis, querría este hombre tales cosas? Pues para buscar un color de tinta que sea legible en un fondo cualquiera. Esto es, se cambia el color de un control durante la ejecución de un programa y el texto que aparece puede, o no, leerse. Para evitar dejarse la vista en esas letras poco legibles está este código:
Public Function TintaxContraste(Colorfondo As Integer, booTotal As Boolean) As Integer
' Esta función devuelve un color de tinta que sea contrastante con un color de fondo y
' que resulte legible.
'<<<<< Colorfondo: El color sobre el que hay que escribir
' booTotal: Si, devuelve blanco o negro, según la luminancia;
' No, devuelve un color con el matiz girado 60º en la rueda cromática.
'>>>>> Devuelve el color de tinta adecuado para ese fondo
Dim ci As ColorInfo
Dim bMatiz As Byte
Dim bSatur As Byte
Dim bValor As Byte
Dim bLumin As Byte
ci = Color[Colorfondo]
If booTotal = Si Then
bLumin = ci.Luminance
If bLumin > 128 Then
Return Color.Black
Else
Return Color.White
Endif
Else
bMatiz = ci.Hue
bSatur = ci.Saturation
bValor = ci.Value
' 60 / 360 * 256 = 43, esto gira 60º el color en la rueda de matiz
' Si pasa de 255, auntomáticamente se reinicia, por lo que no es necesario
' control de exceso.
bMatiz = bMatiz + 43
bValor = bValor + 85
Return Color.HSV(bMatiz, bSatur, bValor)
Endif
End
última edición por Grandamakulo el Martes, 03 Septiembre 2019, 19:59; editado 3 veces
|
#5 Lunes, 02 Septiembre 2019, 21:54 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: [SOLUCIONADO] Extraer Propiedades De Un Color
Muy bueno, sí señor. A fé mía que me viene bien. Gracias por compartir.
=================== No podemos regresar
|
#6 Lunes, 02 Septiembre 2019, 22:35 |
|
|
gambafeliz
Analista Programador
Registrado: Julio 2019
Mensajes: 830
Edad: 54
|
Re: [SOLUCIONADO] Extraer Propiedades De Un Color
' Esta función devuelve un color de tinta que sea contrastante con un color de fondo y
' que resulte legible.
Pues vaya !!!
Parece interesante, me lo quedo, muchas gracias.
|
#7 Martes, 03 Septiembre 2019, 12:25 |
|
|
Grandamakulo
Analista Programador
Registrado: Enero 2016
Mensajes: 311
Edad: 55 Ubicación: En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...
|
Re: [SOLUCIONADO] Extraer Propiedades De Un Color
He modificado ligeramente el algoritmo original, variando también «Valor» porque no me gustaba demasiado el resultado.
He aquí una muestra sobre un «TreeView» del «Total B/N» y del «matizado» —booTotal=Si y booTotal=No—, repectivamente:
|
#8 Martes, 03 Septiembre 2019, 20:13 |
|
|
gambafeliz
Analista Programador
Registrado: Julio 2019
Mensajes: 830
Edad: 54
|
Re: [SOLUCIONADO] Extraer Propiedades De Un Color
He modificado ligeramente el algoritmo original, variando también «Valor» porque no me gustaba demasiado el resultado.
He aquí una muestra sobre un «TreeView» del «Total B/N» y del «matizado» —booTotal=Si y booTotal=No—, repectivamente:
Desde luego se nota la diferencia a mejor.
Pero esa ligera mejora, ¿esta publicada en el código o no?
|
#9 Martes, 03 Septiembre 2019, 20:17 |
|
|
Grandamakulo
Analista Programador
Registrado: Enero 2016
Mensajes: 311
Edad: 55 Ubicación: En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...
|
Re: [SOLUCIONADO] Extraer Propiedades De Un Color
Pero esa ligera mejora, ¿esta publicada en el código o no?
Sí, he editado la entrada, por lo que está actualizado.
|
#10 Miercoles, 04 Septiembre 2019, 07:13 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 2
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|