Ver Mensaje Individual
  #1  
Antiguo 29-08-2012
Comandant Comandant is offline
Miembro
NULL
 
Registrado: ago 2012
Ubicación: Salta
Posts: 34
Reputación: 0
Comandant Va por buen camino
Canvas dolor de cabeza+helpme

Hola a todos este es mi primer post asi que espero hacerme entender.
Bien mi problema radica en que quiero copiar un canvas que creo en una imagen. Bien ya esta casi todo menos la ubicación exacta del canvas origen que aun no he podido resolver, ya que en el canvas destino me sale corrido. Desde ya muchas gracias.
//Creo k se puede probar al tok poniendo un timage y sus respectivos eventos.

Código:
...
public
var
alto, ancho, StartX, StartY : integer;
...
procedure TForm1.imagenMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
begin
//para sakar el inicio del canvas
StartX:= X;
StartY:= Y;
end;


procedure TForm1.imagenMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  Origen, Destino, R: TRect;
begin
//realizar el canvas
Canvas.Brush.Style:= bsClear;
  with Canvas do
  begin
    R.Left := StartX;
    R.Top := StartY;
    R.Right := x;
    R.Bottom := y;
    Canvas.Rectangle(R);
    Origen:= R;
    Destino.Left := 0;
    Destino.Top := 0;
    Destino.Right := ancho;
    Destino.Bottom := alto;
    CopyRect( Destino, Imagen.Canvas, Origen );
  end;
end;


procedure TForm1.imagenMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
arriba, abajo, izquierda, derecha: integer;
begin
//para sakar el alto y el ancho
  if ssLeft in Shift then { make sure button is down }
  begin
    if Y > StartY then
      begin
      abajo:= Y;
      arriba:= StartY;
      end
    else
      begin
      arriba:= Y;
      abajo:= StartY;

      end;
    if X > StartX then
      begin
      izquierda:= StartX;
      derecha:= X;
      end
    else
      begin
      izquierda:= X;
      derecha:= StartX;
      end;
      alto:= abajo - arriba;
      ancho:= derecha - izquierda;
  end;
end;
Responder Con Cita