//s_rect定义在image1上的一个矩形框;
//d_rect=S_rect;
canvas.copyrect(d_rect,image1.canvas,s_rect);

解决方案 »

  1.   

    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
      vRect: TRect;
    begin
      vRect := Bevel1.BoundsRect;
      OffsetRect(vRect, - vRect.Left, - vRect.Top);
      Image2.Canvas.BrushCopy(vRect, Image1.Picture.Bitmap,
        Bevel1.BoundsRect, 0);
    end;//这个只能处理Bitmap
    //如果你要处理jpg
    //请转换转换
    //参考: http://kingron.myetang.com/zsfunc0b.htm
      

  2.   

    zswang(伴水)(* 嘻 *) 我已经试了你的用法,但Bevel1不能响应一些事件
    我用的是SHAPE,但是用你的方法不够准确,切割后的图片与看到的范围有大的差异,
      

  3.   

    在那部分用了你的代码
    就是将vRect := Bevel1.BoundsRect;
      OffsetRect(vRect, - vRect.Left, - vRect.Top);
      Image2.Canvas.BrushCopy(vRect, Image1.Picture.Bitmap,
        Bevel1.BoundsRect, 0);
    中的BEVEL1 换成了SHAPE1了
      

  4.   

    //你没有考虑Image1偏移位置
    procedure TForm1.Button1Click(Sender: TObject);
    var
      vRect0: TRect;
      vRect1: TRect;
    begin
      vRect0 := Shape1.BoundsRect;
      vRect1 := Shape1.BoundsRect;
      OffsetRect(vRect0, - vRect0.Left, - vRect0.Top);
      OffsetRect(vRect1, - Image1.Left, - Image1.Top);
      Image2.Canvas.BrushCopy(vRect0, Image1.Picture.Bitmap, vRect1, 0);
    end;
      

  5.   

    你能告诉我你的邮箱吗,我的EMAIL是[email protected]
      

  6.   

    : zswang(伴水)(* 嘻 *) 你能告诉我怎么能实现这个功能我就把40分给你
    我想用这个框能够放大缩小时能按比例,譬如长:宽=3:4
    能交个朋友吗,你能把EMAIL给我吗
      

  7.   

    基本解决了,就是想和: zswang(伴水)(* 嘻 *) 交个朋友,呵呵
    就是不知道大虾的EMAIL能给你个吗
      

  8.   

    //参考属性TImage.Stretch
    mailto:[email protected]