Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Trabajar con TColor

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Trabajar con TColor Responder citando

Hola Amig@s,

tengo el siguiente problema...me gustaria pintar una imagen en escala de grises con 256 colores. Donde 0 = negro y 255 = blanco.

Me gustaria crearme una paleta de estos colores con un objeto TColor..pero no tengo ni idea...alguien me podria ayudar.

Muchas Gracias.

Kalyfas
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

buscar -> paleta

https://cppbuilder.es/viewtopic.php?t=303

Salu2
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: No lo veo claro Responder citando

Perdona mi ignorancia...pero no veo claro el ejemplo. Si no me equivoco lo que hace es leer desde un archivo la paleta de colores...Esto me parece muy interesante..pero como es ese archivo? me explico..es del tipo matriz como expreso aqui abajo.

linea0: 0 0 0;
linea1: 0.1 0.1 0.1;
.
.
.
linea255: 1 1 1;

Luego esos valores se los asigna al bitmap...perdoname...pero es que no me aclaro.


Bueno si no te importa..te voy a explicar cual es el resto de mi problema..yo tengo una matriz de valores...de i filas y j columnas..la cual tiene valores que van desde 0 a 255, como habras adivinado..estos son los valores que luego quiero mostrar como imagen en escala de grises..

Quiero representar esa matriz como imagen...de momento habia prodado con el metodo Canvas de un TImage..pero me sale rojiso..y por eso habia pensado en dotarle de una matriz de color

TImage->Canvas[i,j] = Matriz[i,j];

Sabes como podria crear directamente, si es que existe forma, un bmp a partir de mi matriz y con la paleta de colores que me diese la gana? Muchas gracias.

Argone
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Vale.. ya me queda mas claro.

Para trabajar con paletas y conversiones a escala de grises aqui tienes un proyecto, con codigo fuente:

http://www.efg2.com/Lab/ImageProcessing/ImageEnhancementUsingPalettes.htm

Crear una paleta de grises:
https://cppbuilder.es/viewtopic.php?t=3853

http://plum.ia.polsl.gliwice.pl/~DIP/efg/Library/Delphi/Graphics/Color.htm

Aqui te pongo un código de _Leo que puedes adaptar:

Código:
const int ANCHO = 320, ALTO = 240;
 BYTE pant[ANCHO][ALTO];
 int x, y, i;

 // Dibujamos en el array (aqui cambia la variable pant por tu matriz)
 for (y=0; y<ALTO; y++)
   for (x=0; x<ANCHO; x++)
  pant[x][y] = x/2+90;

 BITMAPINFO *bmi;
 bmi = (BITMAPINFO*) new BYTE[sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD)*256];
 bmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
 bmi->bmiHeader.biWidth = ANCHO;

 // Si especificamos el alto en negativo la linea 0 estara arriba
 // y si es en positivo se dibuja desde abajo hacia arriba
 bmi->bmiHeader.biHeight = -ALTO;

 // Será un bitmap de 256 colores, o sea 8 bits de color
 bmi->bmiHeader.biPlanes = 1;
 bmi->bmiHeader.biBitCount = 8;
 bmi->bmiHeader.biCompression = BI_RGB;
 bmi->bmiHeader.biSizeImage = 0;
 bmi->bmiHeader.biXPelsPerMeter = 0;
 bmi->bmiHeader.biYPelsPerMeter = 0;
 bmi->bmiHeader.biClrUsed = 0;
 bmi->bmiHeader.biClrImportant = 0;

 // Rellenamos la paleta con tonos de gris
 for (i=0; i<256; i++)
 {
   bmi->bmiColors[i].rgbRed = i;
   bmi->bmiColors[i].rgbGreen = i;
   bmi->bmiColors[i].rgbBlue = i;
   bmi->bmiColors[i].rgbReserved = 0;
 }

 // Dibujamos el array en el canvas del TImage
 SetDIBitsToDevice(Image1->Canvas->Handle, 0, 0,
     ANCHO, ALTO, 0, 0,
     0, ALTO,
     pant, bmi, DIB_RGB_COLORS);

 delete bmi;


Necesitas un TImage, que es donde dibuja la función.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Que te parece esta forma de hacer una paleta de colores?

TColor Color[256];

for(unsigned I=0; I<256; I++)
Color[I] = TColor((I<<16) | (I<<Cool | I);



Lo he encontrado y no me ha dado tiempo a probarlo..pero en principio tiene buena pinta..bueno cuidense.

Argone
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.