Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Ayuda Con tratamiento de imagen (https://www.clubdelphi.com/foros/showthread.php?t=80263)

steelha 13-09-2012 18:55:02

Ayuda Con tratamiento de imagen
 
Buenas, haber si me pueden ayudar no se si es tratamiento de imagen o algo parecido pero es lo siguiente. tengo una imagen necesito poder selecionar una parte de la imagen cualquiera y esa seleccion será mi nueva imagen, poder rotar, recotar parte que no quiera y dibujar puntos(color, circulo, raya, etc...) si pudieran darme una ayuda les agradecere

ecfisa 13-09-2012 20:00:51

Cita:

necesito poder selecionar una parte de la imagen cualquiera y esa seleccion será mi nueva imagen, poder rotar, recotar parte que no quiera y dibujar puntos(color, circulo, raya, etc...)
Hola.

Por favor steelha, realiza una pregunta por hilo. Lee el punto [ 8 ] de la guía de estilo.

Saludos y gracias por tu colaboración :)

ecfisa 13-09-2012 21:31:18

Hola steelha.

Para tu primera pregunta,
Cita:

necesito poder selecionar una parte de la imagen cualquiera y esa seleccion será mi nueva imagen
te hice un ejemplo muy sencillo para darte una idea de como podrías seleccionar con el mouse parte de una imágen (o toda) y copiar la selección en otra.

El ejemplo utiliza dos TImages y un TShape:
Código Delphi [-]
...
implementation

var
  P: TPoint;
  InSelect: Boolean = False;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Shape1.Pen.Color := clWhite;
  Shape1.Pen.Style := psDot;
  Shape1.Visible   := False;
  InSelect         := False;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  P.X       := X;
  P.Y       := Y;
  InSelect  := True;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  R: TRect;
begin
  if InSelect then
  begin
    R := Rect(Image1.Left+P.X,Image1.Top+P.Y,Image1.Left+X,Image1.Top+Y);
    Shape1.BoundsRect  := R;
    Shape1.Brush.Style := bsClear;
    Shape1.Visible     := True;
  end;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Image2.Picture := nil;
  Image2.Canvas.CopyRect(Rect(0,0,X-P.X,Y-P.Y),Image1.Canvas,Rect(P.X,P.Y,X,Y));
  Shape1.Visible := False;
  InSelect       := False;
end;

...
El resto de tus consultas podés agregarlas en nuevos hilos en este mismo foro.

Saludos. :)

ecfisa 13-09-2012 22:37:24

Hola.

Como en el ejemplo anterior sólo permitía trabajar con bmp, te amplio el código de pegado de la selección:
Código Delphi [-]
...
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  BM: TBitmap;
begin
  Image2.Picture := nil;
  BM := TBitmap.Create;
  try
    BM.Height  := Image1.Picture.Height;
    BM.Width   := Image1.Picture.Width;
    BM.Canvas.Draw(0,0,Image1.Picture.Graphic);
    Image2.Canvas.CopyRect(Rect(0,0,X-P.X,Y-P.Y), BM.Canvas,Rect(P.X,P.Y,X,Y));
    Shape1.Visible := False;
    InSelect       := False;
  finally
   BM.Free;
  end;
end;

Saludos.

steelha 14-09-2012 18:43:29

:) gracias ya lei y entendi el punto ocho. :p .
Muchas gracias por la ayuda.

steelha 14-09-2012 19:19:47

Lo demás de dibujar sobre la imagen, ya encontré un hilo donde explica.

steelha 26-09-2012 15:36:33

hola ecfisa, he copiado el codigo tal cual (con modificaciones solo de los nombre de los componentes), pero cuando selecciona la parte que quiero en la imagen principal se pone totalmente en blanco. si me puedes ayudar en esa parte te agradecere

ecfisa 26-09-2012 19:28:12

1 Archivos Adjunto(s)
Hola steelha.

No se por que te puede estar sucediendo eso, acabo de realizar otra prueba y en ningún momento me pone en blanco la imágen orígen.
Por si te sirve de ayuda te adjunto el código de la prueba para que puedas cotejarlo con el tuyo.

Saludos.


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

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