注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

鑫淼梦园的博客

圆你的梦想 从这里开始

 
 
 

日志

 
 

Delphi切割图片,Delphi图片分割  

2013-08-16 01:53:33|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

这个例子是把一张图片平均分成了 4 份, 顺序是: 左、右、上、下; 没使用循环操作, 显得有点笨, 但容易理解.
unit Unit1;

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm} procedure TForm1.Button1Click(Sender: TObject);
const
  path = 'c:\temp\test.bmp';
  { 先准备好测试图片 } var
  bit: TBitmap;
  bits: array [0 .. 3] of TBitmap;
  { 假如分成 4 份 } i, w, h: Integer;
begin
  bit := TBitmap.Create;
  bit.LoadFromFile(path);
  w := bit.Width div 2;
  h := bit.Height div 2;
  for i := 0 to 3 do
  begin
    bits[i] := TBitmap.Create;
    bits[i].SetSize(w, h);
  end;
  BitBlt(bits[0].Canvas.Handle, 0, 0, w, h, bit.Canvas.Handle, 0, 0, SRCCOPY);
  BitBlt(bits[1].Canvas.Handle, 0, 0, w, h, bit.Canvas.Handle, w, 0, SRCCOPY);
  BitBlt(bits[2].Canvas.Handle, 0, 0, w, h, bit.Canvas.Handle, 0, h, SRCCOPY);
  BitBlt(bits[3].Canvas.Handle, 0, 0, w, h, bit.Canvas.Handle, w, h, SRCCOPY);
  for i := 0 to 3 do
  begin
    bits[i].SaveToFile(ChangeFileExt(path, Format('.%.3d.bmp', [i + 1])));
    bits[i].Free;
  end;
  bit.Free;
end;

end.
  评论这张
 
阅读(467)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017