PB调用API函数:MoveToEx,LineTo画线,
函数声明:
FUNCTION boolean LineTo(ulong hwnd,long wx, long wy) LIBRARY "Gdi32.dll"
FUNCTION ulong MoveToEx(ulong hdc,long x,long y,ref strpos lpPoint) LIBRARY "gdi32.dll"
其中,strpos是一个结构体{xpos,ypos}
调用代码如下:
int ii_x,ii_y
strpos pos_zb
ii_x = p_1.X
ii_y = p_1.Y
pos_zb.xpos=100
pos_zb.ypos=100
MoveToEx(GetDC(handle(p_1)),ii_x,ii_y,pos_zb)
LineTo(GetDC(handle(p_1)),300,200)
想实现从[100,100]到[300,200]画线,
但是它总是从P_1的左上方顶点开始画,为什么?
如何修改?
多谢!!
------解决方案--------------------
x y 都需要转换一下 ,
ii_x = UnitsToPixels(p_1.X , xUnitsToPixels!)
ii_y = UnitsToPixels(p_1.Y ,yUnitsToPixels! )
用到位置 ,长度的地方,都需要转一下 ,你测试一下,不行我再来
------解决方案--------------------
把代码改为
int ii_x,ii_y
strpos pos_zb
ii_x = p_1.X
ii_y = p_1.Y
pos_zb.xpos=100
pos_zb.ypos=100
MoveToEx(GetDC(0),ii_x,ii_y,pos_zb)
LineTo(GetDC(0),300,200)
从[100,100]到[300,200]画线
即可实现
------解决方案--------------------
如果要在p_1中划线,应该不能用p_1的坐标,MoveToEx里的坐标就是以p_1为基础的
int ii_x,ii_y
strpos pos_zb
ii_x = p_1.X
ii_y = p_1.Y
pos_zb.xpos=100
pos_zb.ypos=100
MoveToEx(GetDC(handle(p_1)),0,0,pos_zb)
LineTo(GetDC(handle(p_1)),300,200)
------解决方案--------------------
原来有个例子是怎么样调用api做图的,找不到了。