TPanel

Delphi

05/10/2010

Bom dia.      Utilizo um TPanel para receber a imagem da digital. Esta ok. Porém gostaria de saber como faço para salvar essa imagem gerada no TPanel.   abraços!
Fernando Ramos

Fernando Ramos

Curtidas 0

Respostas

Wilson Junior

Wilson Junior

05/10/2010

Como você atribui a imagem ao TPanel?
GOSTEI 0
Wilson Junior

Wilson Junior

05/10/2010

Como você atribui a imagem ao TPanel?
Pois dependendo da maneira que você atribui a imagem no TPanel, você pode fazer o caminho reverso.

Aguardo retorno.
GOSTEI 0
Fernando Ramos

Fernando Ramos

05/10/2010

Atribuo assim:  
  objNBioBSP := CreateOleObject('NBioBSPCOM.NBioBSP');
  objDevice       := objNBioBSP.Device;
  objDevice.Open(NBioBSP_DEVICE_ID_AUTO_DETECT);
  If objDevice.ErrorCode = NBioBSPERROR_NONE Then
    begin
     objExtraction := objNBioBSP.Extraction;
     objExtraction.FingerWnd := ImgDigital.Handle; //AQUI ATRIBUO A DIGITAL AO TPANEL
     objExtraction.WindowStyle := NBioAPI_WINDOW_STYLE_INVISIBLE;
     objExtraction.capture();
       If objExtraction.ErrorCode = NBioBSPERROR_NONE Then
          begin
            TxtDigitalCodigo.Text := objExtraction.TextEncodeFIR;
            BtnConfirmar.Enabled := true;
            TxtMao.Enabled := true;
            TxtDedos.Enabled := true;
            TxtSituacoes.Enabled := true;
            TxtMao.SetFocus;
          end;
        objDevice.Close(NBioBSP_DEVICE_ID_AUTO_DETECT);
      end
    else
      begin
         Application.MessageBox('Leitor digital não encontrado','Nenhum dispositivo conectado',16);
         objNBioBSP := 0;
         objDevice.Close(NBioBSP_DEVICE_ID_AUTO_DETECT);
      end;
GOSTEI 0
Wilson Junior

Wilson Junior

05/10/2010

O teu ImgDigital é que tipo de copmponente? Se for um TImage, é só fazer "imgPapelParede.Picture.SaveToFile('C:\MinhaImagem.bmp');".

Espero ter colaborado.
GOSTEI 0
Fernando Ramos

Fernando Ramos

05/10/2010

O ImgDigital é um TPANEL!
GOSTEI 0
Wilson Junior

Wilson Junior

05/10/2010

Veja se este link te ajuda http://forum.devmedia.com.br/viewtopic.php?t=86138&sid=f09a04307743447554ccb829ad290a57

Espero ter colaborado.
GOSTEI 0
Fernando Ramos

Fernando Ramos

05/10/2010

Já tinha visto este post.

Pelo que entendi ali é processo inverso. Ele precisa colocar uma imagem no TPANEL em execução. Eu já tenho a imagem (digital) em execução no TPANEL e quero salvar em um arquivo de imagem no computador!

abraços!
GOSTEI 0
Fernando Ramos

Fernando Ramos

05/10/2010

Boa tarde.

   Alguém poderia ajudar? Abraços!
GOSTEI 0
Fernando Ramos

Fernando Ramos

05/10/2010

Sem querer ser chato...rs..rs..

Se alguém puder indicar algum material...site....dica.... agradeço!

abraços!
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

05/10/2010

Você ja tentou colocar um componente imagem dentro do Tpanel, e nomar o seu objeto de imagem com o mesmo nome de seu Tpanel?
GOSTEI 0
Fernando Ramos

Fernando Ramos

05/10/2010

Não tentei...mas acredito que irá dar erro não? Mesmo nome....

Agora....não dando erro... o que acontecerá? Só por ser o mesmo nome... a imagem da digital que aparece no TPanel aparecerá tb no TImage?


abraços!
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

05/10/2010

Em seu Tpanel acrescente o 1 ou outro numero no nome dele e deixe apenas o bjeto de imagem com o nome do seu Tpanel.
GOSTEI 0
Fernando Ramos

Fernando Ramos

05/10/2010

Vc sugere que o meu TPANEL se chama TPANEL1 e o meu TIMAGE se chame TPANEL e isso fará com que a imagem da digital...aparece tb no TIMAGE ?

Sem código algum?
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

05/10/2010

O que estou sujerindo é o seguinte:

 objNBioBSP := CreateOleObject('NBioBSPCOM.NBioBSP');
  objDevice       := objNBioBSP.Device;
  objDevice.Open(NBioBSP_DEVICE_ID_AUTO_DETECT);
  If objDevice.ErrorCode = NBioBSPERROR_NONE Then
    begin
     objExtraction := objNBioBSP.Extraction;
     objExtraction.FingerWnd :=Nome de seu componente de imagem.Handle; //AQUI ATRIBUO A DIGITAL AO TPANEL
     objExtraction.WindowStyle := NBioAPI_WINDOW_STYLE_INVISIBLE;
     objExtraction.capture();
       If objExtraction.ErrorCode = NBioBSPERROR_NONE Then
          begin
            TxtDigitalCodigo.Text := objExtraction.TextEncodeFIR;
            BtnConfirmar.Enabled := true;
            TxtMao.Enabled := true;
            TxtDedos.Enabled := true;
            TxtSituacoes.Enabled := true;
            TxtMao.SetFocus;
          end;
        objDevice.Close(NBioBSP_DEVICE_ID_AUTO_DETECT);
      end
    else
      begin
         Application.MessageBox('Leitor digital não encontrado','Nenhum dispositivo conectado',16);
         objNBioBSP := 0;
         objDevice.Close(NBioBSP_DEVICE_ID_AUTO_DETECT);
      end;

GOSTEI 0
Fernando Ramos

Fernando Ramos

05/10/2010

Boa tarde.

  Haa sim... mas... o TIMAGE não tem a opção .handle!

abraços!
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

05/10/2010

você utiliza o sistema deste site? http://www.nitgen.com.br
GOSTEI 0
Fernando Ramos

Fernando Ramos

05/10/2010

O sistema não... apenas o leitor HAMSTER1... o sistema esta sendo desenvolvido por mim mesmo... utilizando os manuais da nitgen!
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

05/10/2010

Tente da seguinte forma:

//procedimento para ser acrescentado a sua.
var
  buffer: THandle;
  bmp: TBitmap;
  memstream: TMemoryStream;
begin 
 buffer:= objExtraction.FingerWnd; if (buffer = 0) then exit; // Se houver Erro durante o loading
  bmp.Handle := buffer;
  memstream := TMemoryStream.create;
  try
    bmp.SaveToStream(memstream);
    memstream.position := 0;
    bmp.LoadFromStream(memstream);
  finally
    memstream.free;
  end; 

 MyCanvas.Draw(0, 0, bmp);

  bmp.Free; // libera o espaço alocado

end;


GOSTEI 0
Dorivan Sousa

Dorivan Sousa

05/10/2010

Boa tarde.

  Haa sim... mas... o TIMAGE não tem a opção .handle!

abraços!




tópico antigo mas eu passei pela mesma situacao agora e achei essa solucao, vc pode pegar o bitmap do panel

var mycanvas : TCanvas;
    DC : HDC;
begin
     DC := GetDC(pic.Handle);
     mycanvas := Tcanvas.create;
     myCanvas.Handle := DC;
     image1.Canvas.CopyRect(Rect(1,1,pic.Width-1,pic.Height-1),myCanvas,Rect(1,1,pic.Width-1,pic.Height-1));
     mycanvas.Free;
     ReleaseDC(pic.Handle,DC);
GOSTEI 0
Dorivan Sousa

Dorivan Sousa

05/10/2010

Boa tarde.

  Haa sim... mas... o TIMAGE não tem a opção .handle!

abraços!



tópico antigo mas vai ai a solucao
var mycanvas : TCanvas;
    DC : HDC;
begin
     DC := GetDC(pic.Handle);
     mycanvas := Tcanvas.create;
     myCanvas.Handle := DC;
     image1.Canvas.CopyRect(Rect(1,1,pic.Width-1,pic.Height-1),myCanvas,Rect(1,1,pic.Width-1,pic.Height-1));
     mycanvas.Free;
     ReleaseDC(pic.Handle,DC);

GOSTEI 0
POSTAR