|
发表于 2009-5-9 11:12:16
|
显示全部楼层
唉,原来如此~!其实我昨晚已经做出来了,只不过觉得颜色怪怪的,弄不成红色和蓝色就放弃了。现在才想起要先取反xor后才是原来想要设置的颜色。再次感谢 ben1222 的指点!
-
- Option Explicit
- Private Type COORD
- x As Long
- y As Long
- End Type
- Private Declare Function Polygon Lib "gdi32" (ByVal hdc As Long, lpPoint As Any, ByVal nCount As Long) As Long
- Private Sub Form_Load()
- Dim poly1(1 To 3) As COORD
- Dim poly2(1 To 3) As COORD
-
- Me.BackColor = vbWhite
- Me.ForeColor = Not vbBlack And &HFFFFFF
- Me.AutoRedraw = True
- Me.ScaleMode = vbPixels
- Me.FillStyle = vbSolid
- Me.DrawMode = vbXorPen
- Me.DrawStyle = vbDot
-
- poly1(1).x = 156
- poly1(1).y = 10
- poly1(2).x = 78
- poly1(2).y = 154
- poly1(3).x = 234
- poly1(3).y = 154
-
- poly2(1).x = 156
- poly2(1).y = 170
- poly2(2).x = 78
- poly2(2).y = 60
- poly2(3).x = 234
- poly2(3).y = 60
- Me.FillColor = (Not vbRed) And &HFFFFFF
- Polygon Me.hdc, poly1(1), 3
- Me.FillColor = (Not vbBlue) And &HFFFFFF
- Polygon Me.hdc, poly2(1), 3
- End Sub
复制代码
其实这种也不能说是水,如果题目不要求输出交集多边形顶点坐标,这样做即可。如果要求的话,那么就自己写个填充算法,然后再求出交集,最后求交集的边界和顶点。不过这种方法时间复杂度和空间复杂度都比较大,呵呵~
[ 本帖最后由 VBProFan 于 2009-5-9 11:35 编辑 ] |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|