复制图像 求一个简单的API(50分)

  • 主题发起人 主题发起人 全文检索
  • 开始时间 开始时间

全文检索

Unregistered / Unconfirmed
GUEST, unregistred user!
用API从一个DC上复制一个区域的图像,一定要用GetPixel,SetPixel一个个点去画吗,很慢

有没有一个API可以拷贝一个区域的图像,在DC上
 
用Canvas.CopyRect是封装起来的,我不想用
CopyRect又是另一个意思
function CopyRect(var lprcDst: TRect; const lprcSrc: TRect): BOOL; stdcall;

这个怎么用啊,只提供了两个TRect.
 
CopyRect就是bitblt
第一个Rect 是copy的图像放置的地方。
第二个Rect 是copy的图像来源
 
procedure TForm1.Button7Click(Sender: TObject);
var
rect1,rect2:trect;
begin
rect1.Left :=0;
rect1.Top:=0;
rect1.Right:=200;
rect1.Bottom:=200;

rect2.Left :=200;
rect2.Top:=200;
rect2.Right:=400;
rect2.Bottom:=400;

copyrect(rect1,rect2);
end;

楼上兄弟,这会有什么效果,我看不到
 
BitBlt(HDC hdcDest,int nXDest,int nYDest,int nWidth, int nHeight,HDC hdcSrc,int nXSrc,int nYSrc,DWORD dwRop);

位图从一个设备场景复制到另一个

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

例:
BitBlt(Canvas.Handle ,0,0,Width,Height,
DC,R.Left,R.Top ,SRCCOPY);
 
procedure TForm1.Button1Click(Sender: TObject);
var
cs:Tcanvas;
rect1,rect2:Trect;
begin
cs:=Tcanvas.Create;
cs.Handle:=GETdc(0);
form1.Canvas.CopyRect(rect(10,10,50,50),cs,rect(10,10,50,50));
bitblt(getdc(form1.Handle),50,50,100,100,getdc(0),50,50,cmSrcAnd);
StretchBlt(getdc(form1.Handle),100,100,150,150,getdc(0),0,0,150,150,cmSrcAnd);
cs.Free;
end;
 
用bitblt吧.
 
后退
顶部