请教如何使用API函数PlgBlt(100分)

  • 主题发起人 主题发起人 xpcu
  • 开始时间 开始时间
X

xpcu

Unregistered / Unconfirmed
GUEST, unregistred user!
PlgBlt函数的第二个参数lpPoint如何给出
 
参考这个
http://www.delphibbs.com/delphibbs/dispq.asp?lid=177260
 
我定义了变量 var FPoint:array [0..3] of Tpoint 用Fpoint给出参数但总报类型转换错
 
var FPoint:array [0..2] of Tpoint
 
还是报错
 
调用时用 @FPoint[0] 做参数。
 
请参照TCanvas的Polygon函数:
type
PPoints = ^TPoints;
TPoints = array[0..0] of TPoint;

procedure TCanvas.Polygon(const Points: array of TPoint);
begin
Changing;
RequiredState([csHandleValid, csPenValid, csBrushValid]);
Windows.Polygon(FHandle, PPoints(@Points)^, High(Points) + 1);
Changed;
end;
 
在 win32 模式下才能使用!
Windows NT: Requires version 3.1 or later.
Windows: Unsupported.
Windows CE: Unsupported.
Header: Declared in wingdi.h.
Import Library: Use gdi32.lib.

把矩形区域的图像扭曲成平等四边形的图像。
第二个参数指向由三个点,是一个指针。
第1个点是平等四边形的左上角
第2个点是平等四边形的右上角
第3个点是平等四边形的右下角
第4 点自动生成!


procedure TForm1.Button3Click(Sender: TObject);
var
p:array[0..2] of TPoint;
b:boolean;
begin
p[0].x:=100;
p[0].y:=100;
p[1].x:=200;
p[1].y:=100;
p[2].x:=200;
p[2].y:=200;
b:=PlgBlt(getdc(handle),p,getdc(handle),0,0,100,100,0,0,0);
if not(b) then showmessage(syserrormessage(getlasterror));
end;
 
谢谢各位已解决
 
后退
顶部