bitblt这个函数在DELPHI里的用法(50分)

  • 主题发起人 主题发起人 waif
  • 开始时间 开始时间
W

waif

Unregistered / Unconfirmed
GUEST, unregistred user!
var
a,b: TBitmap;
begin
a := TBitmap.Create;
b := TBitmap.Create;
a.LoadFromFile('0001-1.bmp');
b.LoadFromFile('0001.bmp');
bitblt(a.handle,0,0,b.Width,b.Height,b.Handle,0,0,SRCPAINT);
我用这样的语句处理后为什么见不到效果啊?是不是哪里写错了
请帮忙找出正确的写法
 
bitblt(a.Canvas.handle,0,0,b.Width,b.Height,b.Canvas.Handle,0,0,SRCPAINT);
+++++++ +++++++

 
帮助上写的很清楚:
// handle of destination device context
是设备环境的句柄,也就是 canvas 的句柄。
 
handle写错了。
 
你的用法错误:下面给出正确用法的示例
procedure TForm1.DrawBitMap(PaintDC:HDC;BitMap:HBitMap;XVal,YVal,AWidth,AHeight:Integer);
var
MemDC:HDC;
OldBitMap:HBitMap;
begin
MemDC:=CreateCompatibleDC(PaintDC);
OldBitMap:=SelectObject(MemDC,Bitmap);
BitBlt(PaintDC,XVal,YVal,AWidth,AHeight,MemDC,0,0,SCRCOPY);
SelectObject(MemDC,OldBitMap);
DeleteObject(MemDC);
end;
end;
//其他函数调用
DrawBitMap(GetDC(Form1.handle),YourBitMap,0,0);
 
//有一点小错误,这里更正,打字的时候不小心
1.SCRCOPY应为SRCCOPY
2.YourBitMap为你要复制的图象的句柄,如
DrawBitMap(GetDC(Form1.handle),Image1.Picture.Bitmap.Handle,0,0,10,10);
 
多人接受答案了。
 
后退
顶部