如何把JPEG格式的图像按要求比例分割,并且能还原?如分割成2X2,4X4等。如能解决可以送分多多,多多

解决方案 »

  1.   

    分割图像 (Dhome的话:最好使用CopyRect和Bitblt)。详情可参看Delphi中CANVAS使用三例或者用Delphi实现位图显示特技
    ---- 有 时 候 我 们 需 要 把 一 个 图 像 分 割 成 几 部 分。 比 如 做 一 个 拼 版 游 戏 时, 就 需 要 把 图 像 分 割 成16
    块。 利 用Canvas 的 属 性Pixels 可 以 实 现 这 一 功 能。 下 面 的 例 子 演 示 了 如 何 把Image 控 件 中 的 图 像 分 成 左 右 两 部 分 并 把 它 们 复 制 到 窗 体 的 画 布 上。 本 示 例 程 序 的 制 作 步 骤 如 下: 
    ---- (1) 建 立 一 个 新 的 应 用 程 序。 
    ---- (2) 在 窗 体 中 加 入 一 个Image 控 件, 名 字 为Image1。 把 属 性Picture 设 置 为Delphi 目 录 下 的Image\Buttons\Abort.bmp。 
    ---- (3) 在 类TForm1 的private 部 分, 加 入 语 句: procedure DivideCanvas(formBegX,ImageBaseX,HalfImageWidth:Integer); //在单元的implementation部分加上过程 DivideCanvas的实现。procedureTForm1.DivideCanvas(formBegX,ImageBaseX,HalfImageWidth:Integer);
    var 
       x,y:integer;
    begin
       for x:=0 to HalfImageWidth-1 do
       begin
          for y:=0 to Image1.Height-1 do
          begin
             Canvas.Pixels[formBegX+x,y]:=Image1.Canvas.Pixels[ImageBaseX+x,y];
          end;
        end;
    end;---- (4) 在Form1 的OnPaint 事 件 中, 加 入 代 码 后 如 下 所 示: 
    procedure TForm1.FormPaint(Sender: TObject);
    var 
       HalfImageWidth:integer;
    begin
       HalfImageWidth:=Image1.Width div 2;
       DivideCanvas(0,0,HalfImageWidth);  {复制图像的左半部分}
       DivideCanvas(HalfImageWidth+50,HalfImageWidth,HalfImageWidth); {复制图像的右半部分}
    end;
      

  2.   

    用copyrect会出现数据丢失,如何解决