FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour C贸mo analizar el contenido de un bitmap
Posts: 365
Joined: Sat Oct 08, 2005 07:59 PM
C贸mo analizar el contenido de un bitmap
Posted: Thu Feb 23, 2006 02:01 PM

Quisiera analizar el contenido de un bitmap mostr谩ndolo en pantalla con @ r,c BITMAP .... y ley茅ndolo punto a punto con GetPixel(). Esto funciona muy bien cuando la imagen es visible en la ventana pero no si la oculto oBmp:Hide() o desplazo la imagen fuera de la pantalla.

驴Alguien sabe alguna forma de leer, pixel a pixel, el contenido de un BMP sin necesidad de hacerlo visible en pantalla?

Gracias y saludos,

Rafael

Posts: 172
Joined: Fri Oct 07, 2005 12:00 PM
C贸mo analizar el contenido de un bitmap
Posted: Thu Feb 23, 2006 11:06 PM
Hola Rafael

function analiza( hDC, hBmp )

local hDCMem := CreateCompatibleDC( hDC )
local hOldBmp := SelectObject( hDCMem, hBmp ) 
local x := 1
local y := 1
local nColor

nColor := GetPixel( hDCMem, x, y ) //a tutipleni

SelectObject( hDCMem, hOldBmp )
DeleteDC( hDCMem )

return nil


#pragma BEGINDUMP
#include <windows.h>
#include "hbapi.h"

HB_FUNC( CREATECOMPATIBLEDC )
{
         hb_retnl( (LONG) CreateCompatibleDC( ( HDC ) hb_parnl( 1 )));

}
#pragma ENDDUMP


Un saludo
Posts: 365
Joined: Sat Oct 08, 2005 07:59 PM
C贸mo analizar el contenido de un bitmap
Posted: Fri Feb 24, 2006 07:57 AM
Paco:
Muchas gracias por tu idea. La he probado as铆:
METHOD Analiza(oImage)
LOCAL hBmp   := oImage:hWnd
LOCAL hDc    := GetDc(hBmp)
local hDCMem := CreateCompatibleDC( hDC )
local hOldBmp:= SelectObject( hDCMem, hBmp )
local nX9 := oImage:nWidth
local nY9 := oImage:nHeight
local x, y, p

FOR y := 0 TO nY9
    cLin := ""
    FOR x := 0 TO nX9
        p := GetPixel(hDcMem, x, y)
        cLin += ALLTRIM(STR(p))
    NEXT
    ? cLin
NEXT
SelectObject( hDCMem, hOldBmp )
DeleteDC( hDCMem )
RETURN NIL

#pragma BEGINDUMP 
....
#pragma ENDDUMP


y para todos los pixels me devuelve blanco (cLin = "-1-1-1-1-1-1-1-1...")
驴Se te ocurre qu茅 estoy haciendo mal?
Rafael
Posts: 172
Joined: Fri Oct 07, 2005 12:00 PM
C贸mo analizar el contenido de un bitmap
Posted: Fri Feb 24, 2006 09:51 AM

Hola

C贸digo:

METHOD Analiza(oImage)
LOCAL hBmp := oImage:hWnd
LOCAL hDc := GetDc(hBmp)
local hDCMem := CreateCompatibleDC( hDC )
local hOldBmp:= SelectObject( hDCMem, hBmp ) << oImage:hBmp
local nX9 := oImage:nWidth

Posts: 365
Joined: Sat Oct 08, 2005 07:59 PM
C贸mo analizar el contenido de un bitmap
Posted: Fri Feb 24, 2006 10:34 AM
Paco:
Perdona, pero no entiendo la modificaci贸n. He puesto
local hOldBmp:= SelectObject( hDCMem, oImage:hBmp)

pero, claro, me da el error TBITMAP:Message not found()

驴Es que tengo que capturar hBmp con alguna otra funci贸n?
Saludos y gracais otra vez
Rafael
Posts: 172
Joined: Fri Oct 07, 2005 12:00 PM
C贸mo analizar el contenido de un bitmap
Posted: Fri Feb 24, 2006 01:16 PM
METHOD Analiza(oImage)
LOCAL hBmp := oImage:hWnd
LOCAL hDc := GetDc(hBmp)
local hDCMem := CreateCompatibleDC( hDC )
local hOldBmp:= SelectObject( hDCMem, hBmp )
local nX9 := oImage:nWidth
local nY9 := oImage:nHeight
local x, y, p


Un hWnd no es un manejador de una imagen. Es un manejador de una ventana. El handle que necesitamos es el hBmp no el hWnd

en lugar de LOCAL hBmp := oImage:hWnd
debes poner LOCAL hBmp := oImage:hBmp
Posts: 365
Joined: Sat Oct 08, 2005 07:59 PM
C贸mo analizar el contenido de un bitmap
Posted: Fri Feb 24, 2006 03:35 PM

Paco:
Gracias por la explicaci贸n. Me hab铆a vuelto loco porque no es oImage:hBmp sino oImage:hBitmap. Arreglado esto, ya me compila y funciona. Voy a jugar un poco con ello.
Saludos y buen fin de semana
Rafael

Continue the discussion