我不想让图片随窗体的大小自动缩收,要怎么实现?
我现在的写法是
src  := rect(0,0,6,29);
dest := rect(12,0,20,29);
Image1.canvas.copyrect(dest, Image_Skin.canvas, src);
要怎么修改才好???

解决方案 »

  1.   

    首先,Image_MusicPlayMax的Stretch应该设成false
    然后用我这段代码
    procedure TForm1.Button1Click(Sender: TObject);
    var
            dest, src : trect;
            mBitMap : TBitMap;
    begin
            mBitMap := TBitMap.Create;
            mBitMap.Width := Image_MusicPlayMax.Width;
            mBitMap.Height := Image_MusicPlayMax.Height;        src  := rect(0,0,6,29);
            dest := rect(0,0,mBitMap.Width,mBitMap.Height);
            mBitMap.canvas.copyrect(dest, Image_MusicPlayDemo.canvas, src);        src  := rect(0,0,25,7);
            dest := rect(0,3,25,10);
            mBitMap.canvas.CopyRect(dest, Image_MusicPlayCur.canvas, src);        Image_MusicPlayMax.Picture.Assign(mBitMap);        mBitMap.Destroy;
    end;procedure TForm1.FormResize(Sender: TObject);
    begin
            Button1Click(nil);
    end;
      

  2.   

    要不自动缩放,你把src和dest两个RECT设置为大小一样就行了,是大小,不是位置
      

  3.   

    Image_MusicPlayMax的Stretch应该设成false
      

  4.   

    procedure TForm1.MusicPlay_Plan(X,Max:Integer);//给个位置,给个宽就可以
     var  dest, src : trect;
          mBitMap : TBitMap;
    begin
       mBitMap := TBitMap.Create;
       mBitMap.Width := Image_MusicPlayMax.Width;
       mBitMap.Height := Image_MusicPlayMax.Height;
      src  := rect(0,0,6,29);
      dest := rect(0,0,Image_MusicPlayMax.Width,Image_MusicPlayMax.Height);
      mBitMap.canvas.copyrect(dest, Image_MusicPlayDemo.canvas, src);
      src  := rect(0,0,25,7);
      if X/Max >1 then X:=Image_MusicPlayMax.Width;
      if X <0 then X:=0;
      dest := rect(Trunc((Image_MusicPlayMax.Width-25)*(X/Max)),6,Trunc((Image_MusicPlayMax.Width-25)*(X/Max))+25,13);
      mBitMap.canvas.copyrect(dest, Image_MusicPlayCur.canvas, src);
      Image_MusicPlayMax.Picture.Assign(mBitMap);end;
    首先:在这个函数里,mBitMap没有释放,运行一段时间后内存会用光光,程序会嗝屁。
    其次:mBitMap经常用到,就做成全局变量,这样不用进一次函数就申请释放一次了,可以提高点速度,包括那些个src,dest什么的,都可以尽量用全局变量,放在form的onResize事件里修改。
    procedure TForm1.FormCreate(Sender: TObject);
    begin
            mBitMap := TBitMap.Create;
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
            mBitMap.Destroy;
    end;