ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Como utilizar essa procedure??

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
SrJeff
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 8 de Janeiro de 2010
Mensagens: 289

MensagemEnviada: Seg Mai 27, 2013 11:27 pm    Assunto: Como utilizar essa procedure?? Responder com Citação

Olá amigo, uso o componente TCamera para capturar a imagem da webcam e para enviar para o cliente remoto e estou salvando a imagem no hd a cada 255 milissegundos, mas está deixando a aplicação muito lenta, o Tcamera tem uma procedure que aparentemente pita a imagem sem salvar no hd, mas não seu usa-lá. a sintaxe é o seguinte:

Código:

procedure paintto(DC : HDC, X : integer, Y integer);
procedure paintto(Canvas : TCanvas, X : integer, Y integer);


Tentei usar assim para pintar a imagem em um TImage mas não funcionou:

Código:

camera.PaintTo(Image1.Picture.Bitmap.Canvas, image1.Width, image1.Height);


Qual seria a maneira correta de usar essas procedures??
procedure paintto(DC : HDC, X : integer, Y integer);
procedure paintto(Canvas : TCanvas, X : integer, Y integer);
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
GustavoToyota
Profissional
Profissional


Registrado: Domingo, 9 de Outubro de 2011
Mensagens: 605
Localização: Sorocaba - SP

MensagemEnviada: Ter Mai 28, 2013 12:48 am    Assunto: Re: Como utilizar essa procedure?? Responder com Citação

SrJeff escreveu:
Qual seria a maneira correta de usar essas procedures??
procedure paintto(DC : HDC, X : integer, Y integer);
procedure paintto(Canvas : TCanvas, X : integer, Y integer);

Na realidade as duas maneiras são corretas. A diferença é que a primeira pinta diretamente no Device Context, e a segunda necessita de um Canvas.
Já que não conseguiu com a segunda, tente assim:
Código:
var
  DC: HDC;
begin
  DC := GetDC(Image1.Picture.Bitmap.Canvas.Handle);
  camera.PaintTo(DC, image1.Width, image1.Height);
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
SrJeff
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 8 de Janeiro de 2010
Mensagens: 289

MensagemEnviada: Ter Mai 28, 2013 2:07 am    Assunto: Re: Como utilizar essa procedure?? Responder com Citação

Obrigado por responder...

Mas não funcionou, ficou da mesma maneira que antes a imagem fica sem nada.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adami
Profissional
Profissional


Registrado: Sexta-Feira, 12 de Novembro de 2010
Mensagens: 501

MensagemEnviada: Ter Mai 28, 2013 7:56 am    Assunto: Responder com Citação

qual ha necessidade de salvar a cada 255 milissegundos no hd a imagem ?
por acaso vc n esta tentando ver o preview da imagem ?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
SrJeff
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 8 de Janeiro de 2010
Mensagens: 289

MensagemEnviada: Ter Mai 28, 2013 11:34 am    Assunto: Responder com Citação

É que na verdade eu tenho que enviar a imagem via sockets, e não consigo pegar diretamente do componente, então eu salvo e carrego em e converto para jpeg para depois enviar, e fica muito lento.

Essas procedures imagino eu que seja para pintar a imagem em um componente, mas se alguém souber alguma outra maneira de pegar a imagem do componente já ajuda.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
GustavoToyota
Profissional
Profissional


Registrado: Domingo, 9 de Outubro de 2011
Mensagens: 605
Localização: Sorocaba - SP

MensagemEnviada: Ter Mai 28, 2013 12:17 pm    Assunto: Responder com Citação

Tente pintar em um TBitmap.
Acho que talvez seja um problema no TImage por ser um TGraphicControl.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
SrJeff
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 8 de Janeiro de 2010
Mensagens: 289

MensagemEnviada: Ter Mai 28, 2013 1:47 pm    Assunto: Responder com Citação

GustavoToyota escreveu:
Tente pintar em um TBitmap.
Acho que talvez seja um problema no TImage por ser um TGraphicControl.




Tentei assim, mas tbm não funcionou, vcs recomendam algum componente??

Código:

var bitmap : TBitmap;
    DC: HDC;
begin
bitmap := TBitmap.Create;
DC := GetDC(bitmap.Canvas.Handle);
Camera1.PaintTo(dc, image1.Width, image1.Height);
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
GustavoToyota
Profissional
Profissional


Registrado: Domingo, 9 de Outubro de 2011
Mensagens: 605
Localização: Sorocaba - SP

MensagemEnviada: Ter Mai 28, 2013 6:46 pm    Assunto: Responder com Citação

Você deve primeiro redimensionar o tamanho do TBitmap. Esse pode ser também o motivo de não ter funcionado no TImage, pois acredito que o Canvas do TImage não se auto-redimensiona. Tente assim:
Código:
var
  Bitmap: TBitmap;
  DC: HDC;
begin
  Bitmap := TBitmap.Create;
  Bitmap.SetSize(800, 600);
  DC := GetDC(Bitmap.Canvas.Handle);
  Camera1.PaintTo(DC, Bitmap.Width, Bitmap.Height);
  Form1.Canvas.Draw(Bitmap, 0, 0);
  Bitmap.Free;
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
SrJeff
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 8 de Janeiro de 2010
Mensagens: 289

MensagemEnviada: Ter Mai 28, 2013 8:03 pm    Assunto: Responder com Citação

Também não funcionou, mas pelo menos a imagem apareceu branca dessa vez.

Da maneira que vc falou não deu mas tentei assim:

Código:

var
  Bitmap: TBitmap;
  DC: HDC;
begin
  Bitmap := TBitmap.Create;
  Bitmap.Height := 300;
  Bitmap.Width := 500;
  //Bitmap.SetSize(800, 600);
  DC := GetDC(Bitmap.Canvas.Handle);
  Camera1.PaintTo(dc, Bitmap.Width, Bitmap.Height);
  Form1.Canvas.Draw(0,0,Bitmap);
  Bitmap.SaveToFile('C:\bmp.bmp');
  Bitmap.Free;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
SrJeff
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 8 de Janeiro de 2010
Mensagens: 289

MensagemEnviada: Qua Mai 29, 2013 1:57 pm    Assunto: Responder com Citação

UP

Editado pela última vez por SrJeff em Qua Mai 29, 2013 1:59 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
SrJeff
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 8 de Janeiro de 2010
Mensagens: 289

MensagemEnviada: Qua Mai 29, 2013 1:58 pm    Assunto: Responder com Citação

Question Question Question
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
GustavoToyota
Profissional
Profissional


Registrado: Domingo, 9 de Outubro de 2011
Mensagens: 605
Localização: Sorocaba - SP

MensagemEnviada: Qua Mai 29, 2013 2:06 pm    Assunto: Responder com Citação

SrJeff escreveu:
Também não funcionou, mas pelo menos a imagem apareceu branca dessa vez.

Da maneira que vc falou não deu mas tentei assim:

Código:

var
  Bitmap: TBitmap;
  DC: HDC;
begin
  Bitmap := TBitmap.Create;
  Bitmap.Height := 300;
  Bitmap.Width := 500;
  //Bitmap.SetSize(800, 600);
  DC := GetDC(Bitmap.Canvas.Handle);
  Camera1.PaintTo(dc, Bitmap.Width, Bitmap.Height);
  Form1.Canvas.Draw(0,0,Bitmap);
  Bitmap.SaveToFile('C:\bmp.bmp');
  Bitmap.Free;

Aiaiai...
Uma coisa óbvia que deixei passar... Tente assim:
Código:

var
  Bitmap: TBitmap;
  DC: HDC;
begin
  Bitmap := TBitmap.Create;
  Bitmap.SetSize(500, 300);
  Camera1.PaintTo(Bitmap.Canvas, 0, 0);
  Form1.Canvas.Draw(0, 0, Bitmap);
  Bitmap.SaveToFile('C:\bmp.bmp');
  Bitmap.Free;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
SrJeff
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 8 de Janeiro de 2010
Mensagens: 289

MensagemEnviada: Qua Mai 29, 2013 3:17 pm    Assunto: Responder com Citação

agora a imagem ficou cinza, mas pegou o retângulo da imagem...

caramba que coisa difícil é usar essa procedure.

Link do componente:

http://mrbool.devmedia.com.br/Novo/Revista/cd79-adriano-cam.zip
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
SrJeff
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 8 de Janeiro de 2010
Mensagens: 289

MensagemEnviada: Qui Mai 30, 2013 6:00 pm    Assunto: Responder com Citação

UP
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB