| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Argone Lt


Registrado: 23 Jun 2003Mensajes: 97Ubicación: Las Palmas.. España
|
Publicado: Jue 07 Ago, 2003 12:29 pm Asunto: Trabajar con TColor |
|
|
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 |
|
 |
R. Porcar Site Admin

Registrado: 08 Ago 2002Mensajes: 113Ubicación: Castellón (España)
|
|
| Volver arriba |
|
 |
Argone Lt


Registrado: 23 Jun 2003Mensajes: 97Ubicación: Las Palmas.. España
|
Publicado: Vie 08 Ago, 2003 12:23 am Asunto: No lo veo claro |
|
|
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 |
|
 |
R. Porcar Site Admin

Registrado: 08 Ago 2002Mensajes: 113Ubicación: Castellón (España)
|
Publicado: Vie 08 Ago, 2003 9:35 am Asunto: |
|
|
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 |
|
 |
Argone Lt


Registrado: 23 Jun 2003Mensajes: 97Ubicación: Las Palmas.. España
|
Publicado: Vie 08 Ago, 2003 10:12 am Asunto: |
|
|
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<< | I);
Lo he encontrado y no me ha dado tiempo a probarlo..pero en principio tiene buena pinta..bueno cuidense.
Argone |
|
| Volver arriba |
|
 |
|