delphi 图像分割 //预定义 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; |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论