Ver Mensaje Individual
  #7  
Antiguo 29-08-2012
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Reputación: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por Comandant Ver Mensaje
cuando haces un rectángulo de derecha a izquierda da como un resultado final una imagen tipo espejo...
Puedes simplificarlo así:
Código Delphi [-]
uses Math;
var
StartX, StartY : integer;

procedure TForm1.ImagenMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  Origen, Destino: TRect;
begin
  Origen.Left := Min(StartX, x);
  Origen.Top := Min(StartY, y);
  Origen.Right := Max(StartX, x);
  Origen.Bottom := Max(StartY, y);;

  Destino.Left := 0;
  Destino.Top := 0;
  Destino.Right := abs(Origen.Left - Origen.Right);
  Destino.Bottom := abs(Origen.Top - Origen.Bottom);
  Canvas.Rectangle(Destino);
  Canvas.CopyRect(Destino, Imagen.Picture.Bitmap.Canvas, Origen);
end;

procedure TForm1.ImagenMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  StartX:= X;
  StartY:= Y;
end;


Saludos.
Responder Con Cita