PDA

Ver la Versión Completa : Blanco & Negro


craven
16-05-2003, 21:42:26
Hola amigos!! Una pregunta rápida: ¿Cómo puedo comprobar si un Bitmap esta en blanco y negro, unicamente? Teniendo en cuenta que dicho bitmap puede estar grabado en un formato que no sea blanco y negro, esto es, la propiedad Monochrome no nos serviría de nada. ¿Tendria que crear un bucle que recorra todo el bitmap y comprobar si solo existen esos dos colores? Un saludo.

delphi.com.ar
16-05-2003, 23:01:43
La verdad que yo te recomendaría trabajar con la paleta del Bitmap, mas que con todo el Bitmap, pero si eso es lo que querés, acá tenés un ejemplo:


Type
TRGBArray = array of TRGBTriple;
PRGBArray = ^TRGBArray;

function InColors( ABitmap : TBitmap; AColors : array of TRGBTriple ) : boolean;
var
xPix,
yPix : Integer;
P : PRGBArray;
begin
Result := True;
for yPix := 0 to ABitmap.Height -1 do
begin
P := ABitmap.ScanLine[yPix];
for xPix := 0 to ABitmap.Width -1 do
if AreIn( P^[xPix], AColors ) Then
begin
Result := False;
Exit;
end;
end;
end;

La función AreIn, que no la vas a encontrar en Delphi, lo que hace es fijarse si ese valor esta un Array de Colores, si solo es para blanco y negro podes modificar esa condición.

Implementación:
var
rgbBlanco,
rgbNegro : TRGBTriple;
begin
with rgbBlanco do
begin
rgbtBlue := 255;
rgbtGreen := 255;
rgbtRed := 255;
end;
with rgbNegro do
begin
rgbtBlue := 0;
rgbtGreen := 0;
rgbtRed := 0;
end;

if InColors( MiBitmap, [rgbBlanco, rgbNegro] ) Then
...