Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-10-2014
ElDuc ElDuc is offline
Miembro
 
Registrado: jul 2004
Posts: 197
Poder: 0
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
  #2  
Antiguo 17-10-2014
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Aquí explican como comparar dos imágenes:
Mediante Scanline
Código Delphi [-]
function IsSameBitmapUsingScanLine(Bitmap1, Bitmap2: TBitmap): Boolean;
var
 i           : Integer;
 ScanBytes   : Integer;
begin
  Result:= (Bitmap1<>nil) and (Bitmap2<>nil);
  if not Result then exit;
  Result:=(bitmap1.Width=bitmap2.Width) and (bitmap1.Height=bitmap2.Height) and (bitmap1.PixelFormat=bitmap2.PixelFormat) ;

  if not Result then exit;

  ScanBytes := Abs(Integer(Bitmap1.Scanline[1]) - Integer(Bitmap1.Scanline[0]));
  for i:=0 to Bitmap1.Height-1 do
  Begin
    Result:=CompareMem(Bitmap1.ScanLine[i],Bitmap2.ScanLine[i],ScanBytes);
    if not Result then exit;
  End;
end;
Responder Con Cita
  #3  
Antiguo 18-10-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Quizás esto te de una idea: resta de imágenes, si la imagen resultante es negra, son iguales.

Saludos.
Responder Con Cita
  #4  
Antiguo 19-10-2014
ElDuc ElDuc is offline
Miembro
 
Registrado: jul 2004
Posts: 197
Poder: 0
ElDuc Va por buen camino
Gracias a todos, pero por el momento dimito de este empeño, no es imprescindible para mi aplicación y ya he invertido demasiado tiempo en ello sin conseguir algo aceptable (desde el punto de vista de rapidez)

MIL GRACIAS.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Zoom de una imagen en otra imagen Juliajuli Gráficos 1 02-09-2013 18:17:35
Buscar posición de una imagen en pantalla ZayDun Varios 7 26-06-2013 22:20:43
Comparar imagen en pantalla con otra imagen gorgori Gráficos 4 24-12-2010 13:17:22
Buscar imagen franfl C++ Builder 2 29-03-2008 14:28:44
Ver imagen en un DBImage en tamaño mayor pablorc Gráficos 2 23-01-2006 16:16:21


La franja horaria es GMT +2. Ahora son las 10:20:05.


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