把一幅图片切割成若干块并保存起来的问题
如题:
但是我编写的代码总是提示说msCopyMode没定义?怎么回事?
代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
source : TBitmap;
i : Integer;
j : Integer ;
sum : Integer ;
NewBmp: TBitmap ;
str : string ;
begin
if (edit1.text = ' ') then
begin
showmessage( '请输入图片要转化的数量! ') ;
abort ;
end ;
try
sum := StrtoInt(edit1.text) ;
except
showmessage( '您输入的不是合法字符的!要输入数字 ') ;
end ;
NewBmp := TBitmap.Create;
source := TBitmap.Create ;
source.loadfromfile( 'E:\yuu.bmp ') ;
NewBmp.Width := source.Width div sum;
NewBmp.Height := source.Height div sum;
NewBmp.CopyMode := cmSrcCopy;
for i:=0 to sum do
for j:=0 to sum do
begin
NewBmp.Canvas.CopyRect(Rect(0, 0, NewBmp.Width, NewBmp.Height), source.Canvas,
Rect(NewBmp.Width*i, NewBmp.Height*j, NewBmp.Width*(i+1), NewBmp.Height*(j+1)) );
NewBmp.SaveToFile( Format( '%d-%d.bmp ', [i, j]) ); // 我把文件存成了 "0-0.bmp ", "0-1.bmp ", ...的格式
end;
NewBmp.Free;
end;
end.
[解决办法]
帮你UP
[解决办法]
老大,你没想过吗,如果sum等于2,也就是用户想分割成两个,可你程序却分割成了四块,而到了for循环那里又分割成了3X3=9块了,Rect坐标都越界了吧估计
[解决办法]
//NewBmp.CopyMode := cmSrcCopy;