我不想让图片随窗体的大小自动缩收,要怎么实现?
我现在的写法是
src := rect(0,0,6,29);
dest := rect(12,0,20,29);
Image1.canvas.copyrect(dest, Image_Skin.canvas, src);
要怎么修改才好???
我现在的写法是
src := rect(0,0,6,29);
dest := rect(12,0,20,29);
Image1.canvas.copyrect(dest, Image_Skin.canvas, src);
要怎么修改才好???
然后用我这段代码
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;
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;