| Exibir mensagem anterior :: Exibir próxima mensagem | 
	
	
		| Autor | Mensagem | 
	
		| JR10 Aprendiz
 
  
  
 Registrado: Domingo, 14 de Março de 2010
 Mensagens: 170
 
 
 | 
			
				|  Enviada: Seg Abr 09, 2012 12:01 am    Assunto: [Dúvida] Como fazer um recorte de Imagem? |   |  
				| 
 |  
				| Boa Noite Amigos e Feliz Páscoa para todos! 
 Bom, vamos a minha dúvida que é a seguinte:
 
 Como posso fazer uma seleção com o mouse e depois clicar em um botão do tipo recorte e recortar a parte de fora da área selecionada?
 
 Veja:
 
 Primeiro eu seleciono a imagem com o mouse
 
 
   
 http://img827.imageshack.us/img827/7909/recortev.th.jpg
 
 
 Depois clico em recortar e fica a parte de dentro da área selecionada assim:
 
 
   
 
 http://img836.imageshack.us/img836/7898/recorte2c.th.jpg
 
 
 Alguém pode me ajudar nessa questão?
 
 Obrigado à todos!!
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| gilsonnrodrigues Moderador
 
  
 
 Registrado: Quinta-Feira, 14 de Abril de 2005
 Mensagens: 9009
 Localização: Governador Valadares-MG
 
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| joao_arthur Profissional
 
  
  
 Registrado: Sexta-Feira, 10 de Novembro de 2006
 Mensagens: 687
 Localização: Fortaleza-CE
 
 | 
			
				|  Enviada: Seg Abr 09, 2012 6:42 pm    Assunto: |   |  
				| 
 |  
				|  	  | Código: |  	  | function TForm1.CortarImagem(Imagem: TGraphic; Valores: TRect): TBitmap; var
 bmp, tbmp: TBitmap;
 drect: TRect;
 begin
 bmp := TBitmap.Create;
 
 bmp.Height := Valores.Bottom - Valores.Top;
 bmp.Width := Valores.Right - Valores.Left;
 
 drect := Bounds(0, 0, bmp.Width, bmp.Height);
 //drect := Bounds(Valores.Left,Valores.Top,Valores.Right,Valores.Bottom);
 try
 tbmp := TBitmap.Create;
 
 tbmp.Height := Imagem.Height;
 tbmp.Width  := Imagem.Width;
 
 tbmp.Canvas.Draw(0,0,Imagem);
 
 bmp.Canvas.CopyRect(drect, tbmp.Canvas, Valores);
 
 Result := bmp;
 finally
 tbmp.Free;
 end;
 end;
 | 
 _________________
 João Arthur.
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| JR10 Aprendiz
 
  
  
 Registrado: Domingo, 14 de Março de 2010
 Mensagens: 170
 
 
 | 
			
				|  Enviada: Seg Abr 09, 2012 11:02 pm    Assunto: |   |  
				| 
 |  
				| 
 Olá amigo obrigado por responder!
 Bom eu já havia tentado seguir esse tutorial mais travei na seguinte parte:
 
 
  	  | Código: |  	  | for I := pInicio.X to pFim.X do
 for J := pInicio.Y to pFim.Y do
 Image2.Canvas.Pixels[I, J] := Image1.Canvas.Pixels[I, J];
 
 | 
 
 
 Você tentou usar ele?
 
 Bom deu uns erros aqui, ai eu acrescentei um Var ficando assim:
 
 
  	  | Código: |  	  | var
 i, j : integer;
 for I := pInicio.X to pFim.X do
 for J := pInicio.Y to pFim.Y do
 Image2.Canvas.Pixels[I, J] := Image1.Canvas.Pixels[I, J];
 
 | 
 
 Agora já roda mais nada acontece...gilsonnrodrigues você pode em ajudar? Obrigado!
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| JR10 Aprendiz
 
  
  
 Registrado: Domingo, 14 de Março de 2010
 Mensagens: 170
 
 
 | 
			
				|  Enviada: Seg Abr 09, 2012 11:19 pm    Assunto: |   |  
				| 
 |  
				|  	  | joao_arthur escreveu: |  	  |  	  | Código: |  	  | function TForm1.CortarImagem(Imagem: TGraphic; Valores: TRect): TBitmap; var
 bmp, tbmp: TBitmap;
 drect: TRect;
 begin
 bmp := TBitmap.Create;
 
 bmp.Height := Valores.Bottom - Valores.Top;
 bmp.Width := Valores.Right - Valores.Left;
 
 drect := Bounds(0, 0, bmp.Width, bmp.Height);
 //drect := Bounds(Valores.Left,Valores.Top,Valores.Right,Valores.Bottom);
 try
 tbmp := TBitmap.Create;
 
 tbmp.Height := Imagem.Height;
 tbmp.Width  := Imagem.Width;
 
 tbmp.Canvas.Draw(0,0,Imagem);
 
 bmp.Canvas.CopyRect(drect, tbmp.Canvas, Valores);
 
 Result := bmp;
 finally
 tbmp.Free;
 end;
 end;
 | 
 | 
 
 Olá senhor joao_arthur, obrigado por me ajudar!
 Bom, tentei usar a sua função mais também não obtive êxito, veja o processo que realizei.
 
 Coloquei a função:
 
 function CortarImagem(Imagem: TGraphic; Valores: TRect): TBitmap;
 
 Em private e gerou a função abaixo:
 
 function TForm1.CortarImagem(Imagem: TGraphic; Valores: TRect): TBitmap;
 Coloquei o código que você postou...mas e agora? Basta selecionar com o Mouse? se for isto não deu certo. Não sei o que fazer, você pode me mostrar onde estou errando?
 
 Obrigado!
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| joao_arthur Profissional
 
  
  
 Registrado: Sexta-Feira, 10 de Novembro de 2006
 Mensagens: 687
 Localização: Fortaleza-CE
 
 | 
			
				|  Enviada: Ter Abr 10, 2012 9:05 am    Assunto: |   |  
				| 
 |  
				| cara manda pra função um TGraphic e as coordenadas, voce pode utilizar um TImage ou outro componente que le permita fazer uma seleção da imagem pegando as coordenadas, aqui eu utilizo o ImageEn mas acho que da pra fazer no TImage da uma olhada nos eventos deve ter alguma coisa relacionada ao mouse. _________________
 João Arthur.
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| JR10 Aprendiz
 
  
  
 Registrado: Domingo, 14 de Março de 2010
 Mensagens: 170
 
 
 | 
			
				|  Enviada: Ter Abr 10, 2012 11:03 pm    Assunto: |   |  
				| 
 |  
				|  	  | joao_arthur escreveu: |  	  | cara manda pra função um TGraphic e as coordenadas, | 
 
 Essa parte eu não entendi...Pode me ajudar a entender?
 
 Obrigado!
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| joao_arthur Profissional
 
  
  
 Registrado: Sexta-Feira, 10 de Novembro de 2006
 Mensagens: 687
 Localização: Fortaleza-CE
 
 | 
			
				|  Enviada: Qua Abr 11, 2012 12:50 pm    Assunto: |   |  
				| 
 |  
				|  	  | Código: |  	  | imgCrop.Picture.Bitmap := CortarImagem(imgSource.Picture.Graphic,Bounds(left,top,right,bottom)); | 
 _________________
 João Arthur.
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| JR10 Aprendiz
 
  
  
 Registrado: Domingo, 14 de Março de 2010
 Mensagens: 170
 
 
 | 
			
				|  Enviada: Qui Abr 12, 2012 12:00 am    Assunto: |   |  
				| 
 |  
				|  	  | joao_arthur escreveu: |  	  |  	  | Código: |  	  | imgCrop.Picture.Bitmap := CortarImagem(imgSource.Picture.Graphic,Bounds(left,top,right,bottom)); | 
 | 
 Olá mais uma vez joao_arthur,
 
 Na linha de comando que você  postou onde devo colocar? Tente em alguns lugares mais esta dando erro no imgCrop.
 
 Veja:
 
 [Error] Unit1.pas(37): Undeclared identifier: 'imgCrop'
 
 Desculpe! Parece que quero tudo mastigado mais estou tentando mesmo!! É que me falat o conhecimento.
 
 Muito Obrigado!
 
 OBS.: No próprio código tem uma parte desabilitada com as barras // era para por ali?
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| joao_arthur Profissional
 
  
  
 Registrado: Sexta-Feira, 10 de Novembro de 2006
 Mensagens: 687
 Localização: Fortaleza-CE
 
 | 
			
				|  Enviada: Qui Abr 12, 2012 10:53 am    Assunto: |   |  
				| 
 |  
				| o imgCrop é um TImage ou algum componente de imagem, voce colocou no form um TImage ? _________________
 João Arthur.
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| JR10 Aprendiz
 
  
  
 Registrado: Domingo, 14 de Março de 2010
 Mensagens: 170
 
 
 | 
			
				|  Enviada: Sex Abr 13, 2012 1:33 pm    Assunto: |   |  
				| 
 |  
				| Desculpe a demora é qeu não pude usar o PC ontem... 
 O erro agora é este:
 
 [Error] Unit1.pas(44): Undeclared identifier: 'imgSource'
 
 Obrigado!
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| Batera Colaborador
 
  
  
 Registrado: Quarta-Feira, 23 de Julho de 2008
 Mensagens: 4899
 Localização: Maringá
 
 | 
			
				|  Enviada: Sex Abr 13, 2012 6:51 pm    Assunto: |   |  
				| 
 |  
				| JR10, acredito que o "imgSource" também seja um componente TImage, que no caso recebe a imagem de origem. Portanto você vai ter dois componentes TImage no formulário: um com a imagem original e outra com a imagem cortada. 
 Abraço!
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| JR10 Aprendiz
 
  
  
 Registrado: Domingo, 14 de Março de 2010
 Mensagens: 170
 
 
 | 
			
				|  Enviada: Sex Abr 13, 2012 8:47 pm    Assunto: |   |  
				| 
 |  
				|  	  | Batera escreveu: |  	  | JR10, acredito que o "imgSource" também seja um componente TImage, que no caso recebe a imagem de origem. Portanto você vai ter dois componentes TImage no formulário: um com a imagem original e outra com a imagem cortada. 
 Abraço!
 | 
 
 Batera você estava certo!
 Porém eu gostaria de mostrar no mesmo TImage e não em outro componente... Tem como?
 
 Meu código esta assim:
 
 
  	  | Código: |  	  | var
 bmp, tbmp: TBitmap;
 drect: TRect;
 begin
 bmp := TBitmap.Create;
 
 bmp.Height := Valores.Bottom - Valores.Top;
 bmp.Width := Valores.Right - Valores.Left;
 
 drect := Bounds(0, 0, bmp.Width, bmp.Height);
 image1.Picture.Bitmap := CortarImagem(image1.Picture.Graphic,Bounds(left,top,Height,bottom));
 try
 tbmp := TBitmap.Create;
 
 tbmp.Height := Imagem.Height;
 tbmp.Width  := Imagem.Width;
 
 tbmp.Canvas.Draw(0,0,Imagem);
 
 bmp.Canvas.CopyRect(drect, tbmp.Canvas, Valores);
 
 Result := bmp;
 finally
 tbmp.Free;
 end;
 end;
 | 
 
 Veja que coloquei o nome do TImage1 no lugar do imgCrop e do imgSource e agora deu erro em:
 
 
  	  | Código: |  	  | [Error] Unit1.pas(44): Undeclared identifier: 'bottom'
 
 | 
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| JR10 Aprendiz
 
  
  
 Registrado: Domingo, 14 de Março de 2010
 Mensagens: 170
 
 
 | 
			
				|  Enviada: Dom Abr 15, 2012 10:37 pm    Assunto: |   |  
				| 
 |  
				| Alguém por favor me de uma ajujdinha nesta dúvida... |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		| joao_arthur Profissional
 
  
  
 Registrado: Sexta-Feira, 10 de Novembro de 2006
 Mensagens: 687
 Localização: Fortaleza-CE
 
 | 
			
				|  Enviada: Seg Abr 16, 2012 11:30 am    Assunto: |   |  
				| 
 |  
				| você tem que declarar essas variáveis (left,top,Height,bottom) e setar elas antes de chamar a função, essas variáveis são as coordenadas do recorte. _________________
 João Arthur.
 |  | 
	
		| Voltar ao Topo |  | 
	
		|  | 
	
		|  |