//预定义 var //在此之前可用const定义常量 //定义图像绘制序列 Pic:array[1..16] of byte=(2,2,2,3,3,3,4,4,5,4,5,4,9,10,10,11); //定义 基层图像与临时图像 FormBmp,TempBmp:TBitmap; //定义点 P,PX,PY:integer; //定义区域 R1,R2:TRect;
//初始化 var width,height:integer; //设置图像中纵横图素的数量 begin width:=需要的横向图素数量; Height:=需要的纵向图素数量; Formbmp:=TBitmap.Create; formbmp.LoadFromFile(GetCurrentDir+'\文件名');//载入图像 Tempbmp:=Tbitmap.Create; tempbmp.Width:=width*8; //设置临时图像的宽度与高度 tempbmp.Height:=height*8; end;
//图像操作 var x,y:integer; begin tempbmp.Canvas.CopyMode:=cmSrcCopy; //设置复制模式 for y:=0 to 原图板纵向图素数量-1 do begin for x:=0 to 原图板横向图素数量-1 do begin P:=pic[y*横向图素数量+x]; //从图像序列中取点 if p<>0 then begin px:=(p mod 面板图素横向图素个数)*单个图素宽度; py:=(p div 面板图素横向图素个数)*单个图素高度; r1:=rect(px,py,px+单个图素宽度,py+单个图素高度); r2:=rect(x*单个图素宽度,y*单个图素高度,x*单个图素宽度+单个图素宽度,y*单个图素高度+单个图素高度); tempbmp.Canvas.CopyRect(r2,formbmp.Canvas,r1); //从原图板FormBmp中取出r1区域的图素并将其复制到r2区域 end; end; form1.Canvas.CopyMode:=cmSrcCopy; form1.Canvas.Draw(0,0,tempbmp); //将临时图像显示到屏幕 end; end;