elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Gama de colores.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Gama de colores.  (Leído 12,624 veces)
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Gama de colores.
« en: 29 Mayo 2013, 15:25 pm »

Casi sin querer me he visto envuelto en una vorágine de color, todo por querer mejorar la presentación tan "sosa" de la consolita del C/C++.

Por lo pronto creo que he conseguido la gama de colores 8 bits, conformando así una paleta de 256 colores por combinación de la tabla de colores "básicos" para el fondo y los caracteres dada por la aplicación de la siguiente tabla/regla:


Citar
PARA LA CONSOLA: system ("color numero(fondo)letra(letras)")

Otra forma es coger una combinación de fondo y letra:

n=16*fondo+letra

Color fondo de consola :

0 = Negro
1 = Azul
2 = Verde
3 = Aguamarina
4 = Rojo
5 = Purpura
6 = Amarillo
7 = Blanco
8 = Gris
9 = Azul claro

Color de texto:

A=10 = Verde claro
B=11 = Aguamarina claro
C=12 = Rojo claro
D=13 = Purpura claro
E=14 = Amarillo claro
F=15 = Blanco brillante

y aplicar el resultado "n" a:
        
    SetConsoleTextAttribute(GetStdHandle (STD_OUTPUT_HANDLE), n );


Si nos fijamos bien hay 255 (16x16-1, porque empieza contando desde cero) combinaciones que se corresponden a lo indicado al principio.

Y éste es el resultado de esas combinaciones:




No salen los 256 porque no cabían en la pantalla.  :) Y el código con el cual he generado la tabla anterior:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4.  
  5. int color (int n);
  6.  
  7. int main()
  8. {
  9.    int n=0,matriz[10][30]={0}, i, j;
  10.    for(i=0;i<9;i++)
  11. {
  12.        for(j=0;j<30 && n<256 ;j++,n++)
  13.        {
  14.           if (j%10==0  )
  15.                printf ("\n");
  16.            matriz[i][j]=n;
  17.            color (n);
  18.            printf("  %d  ", matriz[i][j]);
  19.            color (7);
  20.            printf("\t");
  21.        }
  22. }
  23.    system("pause");
  24.    return 0;
  25. }
  26.  
  27. int color (int n)
  28. {
  29.        SetConsoleTextAttribute(GetStdHandle (STD_OUTPUT_HANDLE), n );
  30. }
  31.  

Pero, siempre tiene que haber un pero, queda lejos del sistema RGB (Red Green Blue)que usa una paleta de 256 por color que da como resultado: 256 x 256 x 256 = 16.777.216 colores distintos,  o sea 24 bits Vamos, la opción casi por defecto de colores en los monitores actuales.

Este valor se representa en hexadecimal, con lo que el rango va de 00 a FF por cada uno de ellos. El código se expresa así: #RRGGBB siendo cada uno de los valores de 2 cifras el rango de cada uno de los 3 colores, con lo que obtenemos el valor final que representa a cada color....

Dicho esto, podemos ver algunos ejemplos:

- Negro: representa la ausencia de color, por tanto su valor será: #000000
- Blanco: es la mezcla de todos los colores: #FFFFFF
- Rojo: todo el tono es del rojo, siendo los otros 2 nulos: #FF0000
- Verde: sólo aparece el verde, sin tener valor los otros 2: #00FF00
- Azul: idéntico razonamiento, pero sólo con el azul: #0000FF

Esto da como resultado un estándar, el UNIX11 dándose la  coincidencia de color de los nombres usados en Windows Presentation Foundation (WPF) ,la versión 1,0 de Microsoft .NET Framework , nombres de formularios Windows Forms, y de Microsoft Internet Explorer color.

Muestro  en la siguiente tabla los principales nombres de colores X11:




Y aquí surge mi duda/pregunta, ¿alguien puede orientarme, en el sentido de cómo acceder a toda esa gama de colores desde "código"?. Sí, ya sé que hay que buscar en las API pero es todo un mundo que estoy lejos de manejar con cierta soltura, de ahí mi petición de orientación "pero" a algo concretito, nada de páginas que yo mismo puedo encontrar googleando.

Espero les haya gustado mi modesta paleta de colores de 8 bits, quedo a la espera de poder usar la de 24 bits.

Saluditos! .... ...



P.D:Gracias a mr.blood por la defensa que hizo en otro foro de "mi/su" código del tema de matrices de 10x10, ya que el "cara" del usuario hxcbps, que no había aportado nada digno de mención, colgo el código como suyo con la esperanza de que otros le "terminaran" la tarea

Y conste que no es que me importe compartir y ayudar dentro de mis modestísimas posibilidades/conocimientos del C/C++, que no, pero una cosa es ayudar y otra colgarse medallitas ajenas. Un mínimo de cortesía/honestidad. Y si expreso esto es porque cuando entró en este foro ya venía "rebotado" de otro foro, más concretamente del Rincón del C. Nuevamente, gracias  mr.blood.


« Última modificación: 2 Junio 2013, 23:43 pm por leosansan » En línea

aguml


Desconectado Desconectado

Mensajes: 378



Ver Perfil
Re: Gama de colores.
« Respuesta #1 en: 10 Junio 2013, 00:50 am »

que yo sepa la consola no admite rgb, va a 8 bits que ya es bastante. Para trabajar con rgb tienes que usar poo y ahi si que puedes usar rgb.


En línea

85

Desconectado Desconectado

Mensajes: 206



Ver Perfil WWW
Re: Gama de colores.
« Respuesta #2 en: 10 Junio 2013, 03:03 am »

esto me hizo acordar a un plug que había hecho para usarlo en un juego de opengl

http://foro.elhacker.net/programacion_cc/gltest2_formato_rgba_para_manejar_colores-t385852.0.html


muy bueno salu2
En línea

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Gama de colores.
« Respuesta #3 en: 10 Junio 2013, 04:21 am »

esto me hizo acordar a un plug que había hecho para usarlo en un juego de opengl

http://foro.elhacker.net/programacion_cc/gltest2_formato_rgba_para_manejar_colores-t385852.0.html


Gracias 85 por el enlace y el código, muy interesante en estos momentos que me debato entre OpenGL, SDl, Qt y Allegro aunque de este último estoy a la espera de ver cómo diablos se instala la versión 5, ya que empezar con una librería, la cuatro, ya superada por una nueva me da no sé qué.

En cualquier caso seguiré practicando con las posibilidades de color de la consola, al fin y al cabo 8 bits no está tan mal, especialmente para alguien que se inicioen este mundillo con tan solo dos colores: texto verde sobre fondo negro. ;)

Saluditos! .... ..


REEDITO: SMFL.
« Última modificación: 4 Enero 2014, 22:39 pm por leosansan » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿El fin de los portátiles de alta gama?
Noticias
wolfbcn 0 1,722 Último mensaje 24 Junio 2010, 22:48 pm
por wolfbcn
de que gama es esta tarjeta grafica?
Hardware
martincor 2 3,545 Último mensaje 26 Noviembre 2011, 11:42 am
por martincor
Nokia no se olvida del segmento de gama baja
Noticias
wolfbcn 0 1,543 Último mensaje 6 Junio 2012, 18:16 pm
por wolfbcn
Ordenador Gamer gama media
Hardware
Zoken 4 3,608 Último mensaje 15 Septiembre 2012, 15:36 pm
por Zoken
Los ordenadores de gama alta no son los más vendidos
Noticias
wolfbcn 4 3,076 Último mensaje 13 Noviembre 2012, 01:07 am
por anonimo12121
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines