在form上有image1,假设其大小为(200,200).执行某事件,代码如下(bm为tbitmap):  
   image1.width  :=  400;  
   image1.height  :=  400;  
   bm  :=  tbitmap.create();  
   bm.loadfromfile('d:\a.bmp');  
   image1.canvas.draw(0,  0,  bm);  
   bm.free();  
虽然image的大小已经改变了,可是显示的图像只是左上角200*200的部分,请问,这是什么原因?我想得到400*400的图像如何实现?(以上数据均为测试数据)

解决方案 »

  1.   

    bm有多大?
    试一下 image1.Canvas.StretchDraw
      

  2.   

    放大只需要把image的stretch属性设为true然后动态改变image控件的大小就可以了
      

  3.   

    Image.Strectch:=true;表明图形随着控件的大小改变而改变
    Image.AutoSize:=true;表明控件随着图形的大小改变而改变。
    你这种情况应该是Image.Strectch:=true;
                    Image.AutoSize:=false;
      

  4.   

    如果bm的大小为400*400,那么你的代码没有问题,如果bm的大小为200*200,代码如下:
      image1.Width:=400;
      image1.Height:=400;
      bm:=tbitmap.Create;
      bm.LoadFromFile('d:\2.bmp');
      image1.canvas.draw(0,  0,  bm);
      image1.Stretch:=true;
      bm.Free;
      

  5.   

    to 小鱼:
      image1.stretch := true;原来是写在代码中啊
      我是在property中定义的stretch为true,结果不好使。呵呵。
      还有问题:
      当执行完image1.stretch := true后,整个窗口的延迟变的很严重,能不能有办法解决啊!
    to 各位:
      我想实现的就是全屏预览,form中相应的图片也要放大。有没有好的方法。
      

  6.   

    放大可以用image.Canvas.CopyRect()
      

  7.   

    image1.Canvas.StretchDraw()可以放大的,它的第一个参数是你想放大的大小,第二个参数是你想放大的那个图片。
      

  8.   

    to xrfw:
      如果直接使用copyrect的话,好使。
      但是在原始窗口显示的状态下,点击全屏显示按钮,将窗口和图片放大就不好使了。
      

  9.   

    怎么不好使,不能用么?两个办法,没有测试,你试一下:
    你再放一个image ,width 和height 为放大后的大小,copyrect后,原image不让它显示。或者点击全屏显示按钮后你用代码把image的长和高改变为你需要的大小,再用以下代码放大图片为改变image的长和高后的大小
    image.picture.bitmap.width:=image.width;
    image.picture.bitmap.height:=image.height;
    image1.Canvas.StretchDraw(image1.clientrect,image.picture.graphic);
      

  10.   

    算了,我的全屏播放通过2个form做了。谢谢大家