以下是我写关于图片拉伸的代码,希望高手能帮我优化下代码或者提供个更好的方法!
比如360界面也是切割图片在组合在一起成主界面的,我希望能得到学习!procedure TForm1.BitBtn1Click(Sender: TObject);
var
source,NewBmp,YBmp : TBitmap;
M:Integer;
begin
//初始化变量
NewBmp := TBitmap.Create;
source := TBitmap.Create;
YBmp := TBitmap.Create;
M:=0;
//加载图片
Source.loadfromfile( 'C:\9.bmp');
//设置原图宽高
YBmp.Width:=710;
YBmp.Height:=500;
//设置图片分割的宽高
NewBmp.Width:=8;
NewBmp.Height:= source.Height;
//分割出左边的图片(包括左边的边与上下两角)
NewBmp.Canvas.CopyRect(Rect(0,0,NewBmp.Width,NewBmp.Height),source.Canvas,
Rect(0,0,NewBmp.Width,NewBmp.Height));
//把左边图片写入原图去并记录宽度
YBmp.Canvas.Draw(0, 0, NewBmp);
M:=8;
//分割出中间的图片
NewBmp.Canvas.CopyRect(Rect(0,0,NewBmp.Width,NewBmp.Height),source.Canvas,
Rect(8,0,8+NewBmp.Width,NewBmp.Height));
//填充中间部分
while M <= YBmp.Width-8 do begin
YBmp.Canvas.Draw(M, 0, NewBmp);
M:=M+8;
end;
//分割出右边的图片(包括右边的边与上下两角)
NewBmp.Canvas.CopyRect(Rect(0,0,NewBmp.Width,NewBmp.Height),source.Canvas,
Rect(Source.Width-8,0,Source.Width-8+NewBmp.Width,NewBmp.Height));
YBmp.Canvas.Draw(YBmp.Width-8, 0, NewBmp);
Image1.Picture.Assign(YBmp);
NewBmp.Free;
end;
比如360界面也是切割图片在组合在一起成主界面的,我希望能得到学习!procedure TForm1.BitBtn1Click(Sender: TObject);
var
source,NewBmp,YBmp : TBitmap;
M:Integer;
begin
//初始化变量
NewBmp := TBitmap.Create;
source := TBitmap.Create;
YBmp := TBitmap.Create;
M:=0;
//加载图片
Source.loadfromfile( 'C:\9.bmp');
//设置原图宽高
YBmp.Width:=710;
YBmp.Height:=500;
//设置图片分割的宽高
NewBmp.Width:=8;
NewBmp.Height:= source.Height;
//分割出左边的图片(包括左边的边与上下两角)
NewBmp.Canvas.CopyRect(Rect(0,0,NewBmp.Width,NewBmp.Height),source.Canvas,
Rect(0,0,NewBmp.Width,NewBmp.Height));
//把左边图片写入原图去并记录宽度
YBmp.Canvas.Draw(0, 0, NewBmp);
M:=8;
//分割出中间的图片
NewBmp.Canvas.CopyRect(Rect(0,0,NewBmp.Width,NewBmp.Height),source.Canvas,
Rect(8,0,8+NewBmp.Width,NewBmp.Height));
//填充中间部分
while M <= YBmp.Width-8 do begin
YBmp.Canvas.Draw(M, 0, NewBmp);
M:=M+8;
end;
//分割出右边的图片(包括右边的边与上下两角)
NewBmp.Canvas.CopyRect(Rect(0,0,NewBmp.Width,NewBmp.Height),source.Canvas,
Rect(Source.Width-8,0,Source.Width-8+NewBmp.Width,NewBmp.Height));
YBmp.Canvas.Draw(YBmp.Width-8, 0, NewBmp);
Image1.Picture.Assign(YBmp);
NewBmp.Free;
end;
根本不用拉伸,应该都是一张张合成的