Ver Mensaje Individual
  #3  
Antiguo 17-10-2014
ElDuc ElDuc is offline
Miembro
 
Registrado: jul 2004
Posts: 197
Reputación: 20
ElDuc Va por buen camino
Gracias por tu colaboración duilioisola.

En realidad ya hago lo que tu dices, es decir si el primer pixel no coincide ya no sigo y cambio al siguiente punto de pantalla y también elimino la parte derecha e inferior donde no puede estar, pero todos los comentarios de mi primer escrito ya contaban con estas características en el código y tarda el miserere.

Tal como me sugieres adjunto el código:
Código Delphi [-]
Function FindImage(AMonitor: Byte; B: TBitmap): Tpoint;
Var
    BB: TgvBitMap;
    BBB: TBitmap;
    X, Y, XX, YY: Integer;
    Font: TRect;
    Ok: Boolean;
Begin
Result.X := -1;
Result.Y := -1;
BB := TgvBitMap.Create;
BB.Bitmap := TBitmap.Create;
BB.Bitmap.Canvas.Lock;
BB.Left := 0;
BB.Top := 0;
If (AMonitor = 1) And (Screen.MonitorCount > 0) Then
    begin
    BB.Bitmap.Width := Screen.Monitors[1].Width;
    BB.Bitmap.Height := Screen.Monitors[1].Height;
    end
else
    begin
    BB.Bitmap.Width := Screen.Width;
    BB.Bitmap.Height := Screen.Height;
    end;
GetDeskTop(AMonitor, BB);
For X := 0 To BB.Bitmap.Width - B.Width Do
    Begin
    For Y := 0 To BB.Bitmap.Height - B.Width Do
        Begin
        Ok := True;
        For XX := 0 To B.Width - 1 Do
            Begin
            For YY := 0 To B.Height - 1 Do
                Begin
                If BB.Bitmap.Canvas.Pixels[X, Y] <> B.Canvas.Pixels[XX, YY] Then
                    begin
                    Ok := False;
                    Break;
                    end;
                End;
            If Not Ok Then
                Break;
            End;
        If Ok Then
            begin
            Result.X:=X;
            Result.Y:=Y;
            Break;
            end;
        End;
    If Ok Then
        Break;
    End;
If Assigned(BBB) Then
    begin
    BBB.Canvas.Unlock;
    BBB.Free;
    end;
If Assigned(BB) Then
    begin
    BB.Bitmap.Canvas.Unlock;
    BB.Free;
    end;
End;

Lo del monitor es porque trabajo con 2.

Saludos.
Responder Con Cita