Así a primeras y viendo que ésto lo vas a tener que hacer con diferentes figuras supongo yo pensaría en crear un componente (no dibujar directamente sobre el área de dibujo) que te soporte todos éstos métodos (selección visual, borrado, arrastrar,...), ya que sino tendrías que programar cada objeto o "linkar" los eventos necesarios de todos ellos a medida que los vayas creando en ejecución.
Yo te conteste como si fuera sobre un control individual, pero te vuelvo a decir que creo que deberías abstraerlo y pasarlo a un nuevo componente.
Cita:
Empezado por Luli
...pero necesito controlar la figura, es decir, poder moverla por el area de dibujo con el ratón, hasta dejarla donde yo quiera.
|
Eso puedes hacerlo programando los eventos del ratón; MouseDown, MouseMove y MouseUp; Prueba algo como ésto en un componente TImage, te puede servir para sacar la idea.
Código Delphi
[-]
...
Capturing:Boolean;
MouseDownSpot:TPoint;
...
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Capturing then begin
TImage(Sender).Left := TImage(Sender).Left - (MouseDownSpot.x - x);
TImage(Sender).Top := TImage(Sender).Top - (MouseDownSpot.y - y);
end;
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Capturing then begin
ReleaseCapture;
Capturing := false;
TImage(Sender).Left := TImage(Sender).Left - (MouseDownSpot.x - x);
TImage(Sender).Top := TImage(Sender).Top - (MouseDownSpot.y - y);
end;
end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button:MouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Capturing := true;
MouseDownSpot.X := x;
MouseDownSpot.Y := Y;
end;
Cita:
Empezado por Luli
Además necesito poder modificar el tamaño de la figura, algo asi como si estuviera en paint.
|
Para eso entiendo que vas a tener que conseguir hacer algo como lo que hace el Paint de dibujar un marco con 8 puntos para poder seleccionar el componente; La idea de funcionamiento es similar a la explicada antes (utilizando los mismos eventos), solo que si marcas la imagen se mueve y si marcas en el borde se cambia el tamaño.
Cita:
Empezado por Luli
Otra cosa, ¿como puedo hacer que se borre la figura que dibujé? Estoy usando un Timage como area de dibujo dentro de mi formulario.
|
Bueno, si trabajas con objetos (no dibujando sobre el área de dibujo, eliminando el componente tendrás esa parte echa).
Existe un componente que sirve para lo que estás programando, no se si puedes utilizarlo, o necesitas fabricarlo tú; En cualquier caso te puede servir de guía.
http://www.delphiarea.com/products/simplegraph/