Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Blanco & Negro (https://www.clubdelphi.com/foros/showthread.php?t=512)

craven 16-05-2003 20:42:26

Blanco & Negro
 
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 22: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:


Código:

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:
Código:

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
  ...



La franja horaria es GMT +2. Ahora son las 03:17:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi