请教VB高手一个polyline的问题

请教VB高手一个polyline的问题,第1张

首先是声名

Declare Function Polyline Lib "gdi32" Alias "Polyline" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long

这里要用到hdc可以用getdc获得,hdc用完后用releasedc释放资源。所以这里还要声名这两个api

Declare Function GetDC Lib "user32" Alias "GetDC" (ByVal hwnd As Long) As Long

Declare Function ReleaseDC Lib "user32" Alias "ReleaseDC" (ByVal hwnd As Long, ByVal hdc As Long) As Long

这里用到一个自定义类型POINTAPI,同样需要声明

type POINTAPI

x as long

y as long

end type

然后就可以调用了。

比如你直接在屏幕上作画,那就这样

dim hdc as long ‘保存句柄

dim points(3) as POINTAPI ’假设画三角

‘型, 三个点存在这个数组里

points(0).x=0

points(0).y=0

points(1).x=100

points(1).y=0

points(2).x=0

points(2).y=100

hdc=getdc(0)'获得句柄

Polyline hdc,points(0),3 '画三角形

'第一个参数表示句柄,第二个参数表示点的数组,第三个参数代表点的个数。

releasedc 0,hdc ’释放句柄

这样就可以了。

必须有一个数组或者集合的东西存储这些点的坐标,看这些点的坐标是从哪里来的了,如果是存在某个地方你读出来的,比如数据库或者cookie里,那么这样做就很自然了,比如说存在一个二维数组中。

var points = [[1,2],[3,4],[5,6],[7,8]]

var a = []

for (p in points) {

a.push(new BMap.Point(p[0],p[1]))

}

虽然不清楚那个API,但看你的写法,最后BMap.Point要存在一个数组里,其实完全可以读出来的时候就直接放在a数组里。

.....a, {strokeColor:"blue", strokeWeight:3, strokeOpacity:0.5})

若是你的程序要通过用户 *** 作在地图上一个一个加点,那么循环就不合适了,一个一个加就好了。

若你只想把这些点存在代码里,那这么写完全可以,没有更简单的方法,只会越搞越复杂。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8107244.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存