学过微积分吗?
道理很简单,剪切任意图形,还是是用矩形拼出来的

解决方案 »

  1.   

    var
      Form1: TForm1;
      x0,y0:integer;
      down,resized:Boolean;implementation{$R *.DFM}procedure Tform1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      x0:=x;
      y0:=y;
      if (x>Image1.Width-10)or(y>image1.Height-10) then begin
        Image1.Cursor:=crSize;
        resized:=true;
      end else begin
        Image1.Cursor:=crDefault;
        down:=TRUE;
      end;
    end;procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      if x>Image1.Width-10 then begin
        Image1.Cursor:=crSize;
      end else begin
        Image1.Cursor:=crDefault;
      end;
      if down then begin
        Image1.Left:=Image1.Left+x-x0;
        Image1.top:=Image1.top+y-y0;
      end;
      if resized then begin
        Image1.Width:=Image1.Width+x-x0;
        Image1.Height:=Image1.Height+y-y0;
        x0:=x;y0:=y;
      end;
    end;procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      down:=False;
      resized:=False;
    end;