Screen.Cursor := crHourGlass;
  try
      rect1.Left:=0;
      rect1.top:=0;
      rect1.right:=image1.Width div 2;
      rect1.bottom:=image1.height div 2;
      image1.Picture.Bitmap.Canvas.StretchDraw(rect1,image1.Picture.Bitmap);
      image1.Width:=rect1.right;
      image1.height:=rect1.bottom;
  finally
    Screen.Cursor := crDefault;
  end;
我使用以上语句,第一次很正常,图像变为原来1/4大小,可第二次点击stretch,图像出现覆盖现象,高手指点一下,好吗!?

解决方案 »

  1.   

    从源程序看,你只是想通过点击就缩小图像,你还不如把Image1.Stretch打开,修改一下Image1的尺寸,后面加上一个Refresh就可以了.
      

  2.   

    image1.Picture.Bitmap在重画之前必须先清空图象
      

  3.   

    huyalin(飞梦):
    那么我应该如何修改呢?谢谢!!!
    对了分全给你!
      

  4.   

    Image1.Picture.assign(nil);放在我源程序什么地方?谢谢!!!
      

  5.   

    上面的看错了!Image1.AutoSize:=True;
    Image1.TransParent:=True;
    Image2.AutoSize:=True;
    Image2.Visable:=False;Screen.Cursor := crHourGlass;
      try
          rect1.Left:=0;
          rect1.top:=0;
          rect1.right:=image1.Width div 2;
          rect1.bottom:=image1.height div 2;
          image2.Picture.Bitmap.assign(image1.Picture.Bitmap);
          image1.Picture.Bitmap.Canvas.Brush.Style:=bsSolid;
          image1.Picture.Bitmap.Canvas.FillRect(Image1.ClientRect);
          image1.Picture.Bitmap.Canvas.StretchDraw(rect1,image2.Picture.Bitmap);
          image1.Width:=rect1.right;
          image1.height:=rect1.bottom;
      finally
        Screen.Cursor := crDefault;
      end;
      

  6.   

    ehom(?!) :为什么要有两个image呢?
      

  7.   

    ehom(?!) :还是不行,情况和我原先的基本一样。
      

  8.   

    用两个是因为要清楚Image1上画布的内容前,用Image2保存其内容!Image1.AutoSize:=True;
    Image1.TransParent:=True;
    Image2.AutoSize:=True;
    Image2.Visable:=False;四项属性设了吗?以上程序已调试通过,没问题!