可以使用API函数BitBlt分四个部分拷贝。

解决方案 »

  1.   

    image2.Canvas.CopyRect(Image2.ClientRect, Image1.Canvas,Rect(0,0,Image1.ClientWidth div 2,Image1.ClientHeight div 2));
    ...
      

  2.   

    uses Types; //for Delphi6(*
    function OffsetRect(var Rect: TRect; DX: Integer; DY: Integer): Boolean;
    begin
      if @Rect <> nil then // Test to increase compatiblity with Windows
      begin
        Inc(Rect.Left, DX);
        Inc(Rect.Right, DX);
        Inc(Rect.Top, DY);
        Inc(Rect.Bottom, DY);
        Result := True;
      end
      else
        Result := False;
    end;
    *)
    procedure TForm1.Button1Click(Sender: TObject);
    var
      vRectT: TRect;
      vRect0: TRect;
    begin
      vRect0 := Rect(0, 0, Image1.Picture.Bitmap.Width div 2,
        Image1.Picture.Bitmap.Height div 2);  vRectT := vRect0;
      OffsetRect(vRectT, 0, 0);
      Image2.Picture.Bitmap.Width := vRect0.Right;
      Image2.Picture.Bitmap.Height := vRect0.Bottom;
      Image2.Canvas.CopyRect(vRect0, Image1.Canvas, vRectT);  vRectT := vRect0;
      OffsetRect(vRectT, Image1.Picture.Bitmap.Width div 2, 0);
      Image3.Canvas.CopyRect(vRect0, Image1.Canvas, vRectT);  vRectT := vRect0;
      OffsetRect(vRectT, 0, Image1.Picture.Bitmap.Height div 2);
      Image4.Canvas.CopyRect(vRect0, Image1.Canvas, vRectT);  vRectT := vRect0;
      OffsetRect(vRectT, Image1.Picture.Bitmap.Width div 2, Image1.Picture.Bitmap.Height div 2);
      Image5.Canvas.CopyRect(vRect0, Image1.Canvas, vRectT);  Image3.Left := Image2.Left + Image2.Width;
      Image3.Top := Image2.Top;  Image4.Left := Image2.Left;
      Image4.Top := Image2.Top + Image2.Height;  Image5.Left := Image2.Left + Image2.Width;
      Image5.Top := Image2.Top + Image2.Height;
    end;
      

  3.   

    uses Types; //for Delphi6(*
    function OffsetRect(var Rect: TRect; DX: Integer; DY: Integer): Boolean;
    begin
      if @Rect <> nil then // Test to increase compatiblity with Windows
      begin
        Inc(Rect.Left, DX);
        Inc(Rect.Right, DX);
        Inc(Rect.Top, DY);
        Inc(Rect.Bottom, DY);
        Result := True;
      end
      else
        Result := False;
    end;
    *)
    procedure TForm1.Button1Click(Sender: TObject);
    var
      vRectT: TRect;
      vRect0: TRect;
    begin
      vRect0 := Rect(0, 0, Image1.Picture.Bitmap.Width div 2,
        Image1.Picture.Bitmap.Height div 2);  vRectT := vRect0;
      OffsetRect(vRectT, 0, 0);
      Image2.Picture.Bitmap.Width := vRect0.Right;
      Image2.Picture.Bitmap.Height := vRect0.Bottom;
      Image2.Canvas.CopyRect(vRect0, Image1.Canvas, vRectT);  vRectT := vRect0;
      OffsetRect(vRectT, Image1.Picture.Bitmap.Width div 2, 0);
      Image3.Canvas.CopyRect(vRect0, Image1.Canvas, vRectT);  vRectT := vRect0;
      OffsetRect(vRectT, 0, Image1.Picture.Bitmap.Height div 2);
      Image4.Canvas.CopyRect(vRect0, Image1.Canvas, vRectT);//查看用
      vRectT := vRect0;
      OffsetRect(vRectT, Image1.Picture.Bitmap.Width div 2, Image1.Picture.Bitmap.Height div 2);
      Image5.Canvas.CopyRect(vRect0, Image1.Canvas, vRectT);  Image3.Left := Image2.Left + Image2.Width;
      Image3.Top := Image2.Top;  Image4.Left := Image2.Left;
      Image4.Top := Image2.Top + Image2.Height;  Image5.Left := Image2.Left + Image2.Width;
      Image5.Top := Image2.Top + Image2.Height;
    end;
      

  4.   

    to zswang(伴水)(* 嘻 *):
       算你狠,给你分!