有一个image,picture调入jpg或bmp文件,哪个不定.而且文件的大小不定,为了让图片全部显示设置image1.Stretch:=true;然后在image1上放一个label,要求是在image的大小改变时,label相对图中的两条线的位置不发生变化.可以看效果图.上边的是开始的时候label的位置.下面是在image的打下改变后不应该的位置.第二副图,因为form的大小改变,所以label的位置改变了,想实现的方式是,form的大小改变时,label向对那两条线的位置不发生变化,应该和第一副图一样.我看了Stretch的原理,不过还是没有解决.请高手不吝赐教!!

解决方案 »

  1.   

    第一张图片的连接地址http://classpic.chinaren.com/wrapper.html?url=http://classpic16.chinaren.com/album/pic/460/257/2815032345916257460/119086029284039.jpg
    第二张图片的连接地址http://classpic.chinaren.com/wrapper.html?url=http://classpic16.chinaren.com/album/pic/460/257/2815032345916257460/119086034719258.jpg
      

  2.   

    1显示jpg或者bmp图片
    procedure ShowPicture;
    Var
      tpStream: TmemoryStream;
    begin
      //判断文件的扩展名是jpg的还是bmp的  可以根据打开的文件然后做字符判断
      if IsJPG then 
      begin
         tpStream:=TmemoryStream.Create;
         try
           tpStream.LoadFromFile(PicturePath+PictureName);
           image.Picture.Graphic:=TjpegImage.Create;
           image.Picture.Graphic.LoadFromStream(tpstream);
         finally
           tpstream.Free
         end;
      end else
        image.Picture.LoadFromFile(PicturePath+PictureName);
    end;
    2,为了保持与那两条线平衡可以在窗体的OnCanResize事件里写相应代码
    procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
      NewHeight: Integer; var Resize: Boolean);
    begin
      //采用窗体与LABEL比例的算法  
       //窗体原先的宽度为  Self.Width;  窗体改变后的大小为  NewWidth ;
      //具体的算法应该是什么样的  根据你实际的情况 
    end;