我在FORM里面放了两个IMAGE(默认图片1)。需要实现以下功能:
鼠标按下左键,拖动鼠标,框选中这两个IMAGE,鼠标左键松开后,两个IMAGE的图片1换成图片2好久没碰delphi了,谢谢各位大侠。

解决方案 »

  1.   


    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, jpeg, ExtCtrls;type
      TForm1 = class(TForm)
        Image1: TImage;
        Image2: TImage;
        procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
          Y: Integer);
        procedure FormCreate(Sender: TObject);
        procedure FormPaint(Sender: TObject);
      private
        { Private declarations }
        Oldx,Oldy,Newx,Newy:Integer;
        FDown:Boolean;
        procedure ChangePic;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      FDown := True;
      Oldx := X;
      Oldy := Y;
      Newx := X;
      Newy := Y;
    end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      if FDown then
      begin
        ChangePic;
        FDown := False;
      end;
    end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      if FDown then
      begin
        Newx:= X;
        Newy := Y;
        Self.Invalidate;
      end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      Self.DoubleBuffered := True;
    end;procedure TForm1.FormPaint(Sender: TObject);
    begin
      SElf.Canvas.Pen.Color := clRed;
      Self.Canvas.Rectangle(Oldx,Oldy,Newx,Newy);
    end;procedure TForm1.ChangePic;
    var
      pic : TPicture;
    begin
      pic := TPicture.Create;
      pic.Assign(Image1.Picture);
      Image1.Picture.Assign(Image2.Picture);
      Image2.Picture.Assign(pic);
    end;end.
      

  2.   

    FormMouseUp改成下面这样,最好再判断选择区域大小if FDown then
       ChangePic;
    FDown := False;不过话说LZ的这功能,我没见过这样变换图片的,不太符合常规习惯操作