我也不知道我一开始都是让
系统自己释放的,出错了
才自己释放。
只在这里使用过
procedure TForm1.drawit(img:Timage; sets: array of Trect;allwidth,iwidth,iheight,gapwidth:integer;x,y:integer);
var
i,itmp1,itmp2:Integer;
largemark:Integer;//标志最大数
markx,marky:Integer;
xpos:integer;
//iwidth:Integer; //小格子的宽度
//gapwidth:integer; //缝隙宽度
//allwidth:Integer; //画面宽度
begin
//擦除上次
img.Canvas.Brush.Style:=bsSolid; //擦除canvas
img.Canvas.Brush.Color:=clWhite; //这里虽然是白色但是image1.transtrac:=true;
img.Canvas.FillRect(Rect(img.left,img.Top,img.Width,img.Height));
//画图
allwidth:=img.Width;
largemark:=((allwidth-gapwidth) div(gapwidth+iwidth));
markx:=x;
marky:=y;
for i:=1 to largemark do
begin
self.drawbmpheard(image1.Canvas,Rect(0,0,5*iwidth+6*gapwidth,30),i+markbegin,markx,marky);
xpos:=markx+gapwidth;//在每一循环开头留个空格
for itmp1:=1 to 5 do
begin
self.drawbmpunit(image1.Canvas,Rect(0,0,iwidth,iheight),clGray,clWhite,xpos,marky+34);//
xpos:=xpos+gapwidth+iwidth;//保证下一个小格子的位置
rectset[(i-1)*5+itmp1].Left:=xpos;
rectset[(i-1)*5+itmp1].Top:=marky+34;
rectset[(i-1)*5+itmp1].Right:=xpos+iwidth;
rectset[(i-1)*5+itmp1].Bottom:=rectset[(i-1)*5+itmp1].Top+iheight;
end;
markx:=markx+5*iwidth+5*gapwidth;
end;
markbegin:=markbegin+largemark;//做图完毕改变markbegin
end;
///到底怎么回事啊,大虾来帮帮我啊