如何把bmp图片(分成10例)把10列从左到右画到image1中。 ----------急啊。(100分)

  • 主题发起人 主题发起人 afeisky
  • 开始时间 开始时间
A

afeisky

Unregistered / Unconfirmed
GUEST, unregistred user!
如何把bmp图片(分成10例)把10列从左到右画到image1中。
======================================
分成10列?
for i=1 to 10 do
begin
....???
end;
 
使用bitblt函数,windows自带的函数
 
BitBlt


Declare Function BitBlt Lib "gdi32" Alias "BitBlt" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
说明
将一幅位图从一个设备场景复制到另一个。源和目标DC相互间必须兼容
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hDestDC Long,目标设备场景
x,y Long,对目标DC中目标矩形左上角位置进行描述的那个点。用目标DC的逻辑坐标表示
nWidth,nHeight Long,欲传输图象的宽度和高度
hSrcDC Long,源设备场景。如光栅运算未指定源,则应设为0
xSrc,ySrc Long,对源DC中源矩形左上角位置进行描述的那个点。用源DC的逻辑坐标表示
dwRop Long,传输过程要执行的光栅运算
注解
在NT环境下,如在一次世界传输中要求在源设备场景中进行剪切或旋转处理,这个函数的执行会失败
如目标和源DC的映射关系要求矩形中像素的大小必须在传输过程中改变,那么这个函数会根据需要自动伸缩、旋转、折叠、或切断,以便完成最终的传输过程

 
创建一个位图对象并将位图载入该对象中
位图对象和Image对象都有Canvas属性,可以调用Canvas对象的一些方法,如拷贝矩形等等
通过计算位图对象的位图大小可以分成10列,然后用矩形拷贝方法分别拷贝。具体方法
的使用可查看帮助。
 
高手们,我不会啊,能不是举个例子?写出代码。
 
代码如下:procedure BmpMoveToImages(image1:Timage);
var
I:Integer;
bmp:Tbitmap;
Dest,Source: TRect;
Bmpcolwidth,Imagecolwidth:Integer;
Bmpcolheight,Imagecolheight:Integer;
begin
bmp:=Tbitmap.Create ;
Try
Bmp.Width:=100;
Bmp.Height:=100;
bmp.LoadFromFile('c:/windows/circles.bmp');
//假设图框的宽.高均能被10整除

Bmpcolwidth:=bmp.Width div 10;
Bmpcolheight:=bmp.Height ;
imagecolwidth:=image1.Width div 10;
Imagecolheight:=image1.Height ;

For i:=1 to 10 Do
Begin
Sleep(1000);
Dest:=Rect((i-1)*imagecolwidth,0,i*imagecolwidth,imagecolHeight);
Source:=Rect((i-1)*Bmpcolwidth,0,i*bmpcolwidth,BmpcolHeight);
Form1.Image1.Canvas.CopyRect(dest,bmp.Canvas,source);
image1.Refresh;
End;
Finally
bmp.Free ;
End;
end;
 
sffjjj已经写出来了,就是这样的
 
后退
顶部