Problemas con los bitmaps

06/09/2006 - 20:32 por raketa | Informe spam
Buenas a todos
Mi problema es el siguiente.
Estoy progrmanado con c# una aplicación que en un momento dado tengo que
escribir una frase dentro de un bitmap y representarlo en una pantalla
monocromo. El problema está en que a causa del tipo de formato que se define
a las letras del bitmap, me escribe las letras con difuminados para poder
aplicar el formato correctamente.
Con estos difuminados las letras se ven a rayas y no se puede leer el texto
correctamente, ya que la pantalla es en blanco y negro.
¿Alguien sabe la manera de escribir solo en blanco y negro sin pasar por las
escalas de grises?
 

Leer las respuestas

#1 RAlvare
07/09/2006 - 00:02 | Informe spam
Buenas a todos
Mi problema es el siguiente.
Estoy progrmanado con c# una aplicación que en un momento dado tengo que
escribir una frase dentro de un bitmap y representarlo en una pantalla
monocromo. El problema está en que a causa del tipo de formato que se
define
a las letras del bitmap, me escribe las letras con difuminados para poder
aplicar el formato correctamente.
Con estos difuminados las letras se ven a rayas y no se puede leer el
texto
correctamente, ya que la pantalla es en blanco y negro.
¿Alguien sabe la manera de escribir solo en blanco y negro sin pasar por
las
escalas de grises?



No sé si estaré diciendo alguna barbaridad porque nunca he tenido que poner
nada en blanco y negro, sí en
escala de grises, pero, pienso que el bitmap se puede convertir a blanco y
negro con una funcion que lea sus pixels y los convierta a blanco
o negro según su mayor o menor proximidad al RGB (0,0,0) (Negro) o al RGB
(255,255,255) (Blanco)


Color pixel;
for (int y = 0; y < m_altoImagen; y++)

{

for (int x = 0; x < m_anchoImagen; x++)

{

// Obtener un pixel de la imagen

pixel = MapaDeBits.GetPixel(x, y);

// Obtener el color promedio

t = (pixel.R + pixel.G + pixel.B) / 3;

// Colocar el pixel nuevo

MapaDeBits.SetPixel(x, y, Color.FromArgb(t, t, t))

}

}

Lo anterior convierte a escala de grises de forma imperfecta, no se calcula
correctamente la luminancia, para mayor precisión se deberia usar la
fórmula:
lum= (int)(pixel.R*0.3 + pixel.G*0.59+ pixel.B*0.11);

pondrías MapaDeBits.SetPixel(x,y,Color.FromArgb(lum,lum,lum))



Saludos.

RAlvare.

Lugones.

Preguntas similares