Hola nuevamente, agradezco por su atención y estoy en deuda, aunque hoy estuve viendo mi código y me anduvo muy bien, nose porque la otra vez no me dio el resultado esperado me quede pensando en el porque?, Bien escafandra tu código es lo mismo que el mio nada mas que mas simplificado y me diste nuevas ideas con el valor absoluto, porque había probado de sumar a su left el width de un elemento dado y a veces me daba excepciones por el número negativo, dejo avisando que ambos códigos tienen un problema y es que cuando haces un rectángulo de derecha a izquierda da como un resultado final una imagen tipo espejo, no creo que sea muy difícil de solucionar así que me pondré a trabajar. Desde ya muchas Gracias
Aqui esta código final para los que lo quieran, obviamente el resto ya lo saben...
Código Delphi
[-]procedure TForm2.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
Origen, Destino: TRect;
begin
Canvas.Brush.Style:= bsClear;
with Canvas do
begin
if StartX > X then
begin
Origen.Left := X;
Origen.Right := StartX;
end
else
begin
Origen.Left := StartX;
Origen.Right := x;
end;
if StartY > Y then
begin
Origen.Top := Y;
Origen.Bottom := StartY;
end
else
begin
Origen.Top := StartY;
Origen.Bottom := y;
end;
Canvas.Rectangle(Origen);
Destino.Left := 0;
Destino.Top := 0;
Destino.Right := abs(Origen.Left - Origen.Right);
Destino.Bottom := abs(Origen.Top - Origen.Bottom);
CopyRect( Destino, Image1.Canvas, Origen);
end;
end;