主题:急求高手:画任意四边形并填充颜色的问题,多谢
chenji
[专家分:0] 发布于 2009-01-01 00:02:00
请问,已知任意四点的坐标:(x1,y1),(x1,y2),(x2,y3),(x2,y4),如何根据这四点画出四边形,并填充颜色,比如说黑色或红色?
能否写出大体程序来?
多谢
回复列表 (共3个回复)
沙发
一江秋水 [专家分:9680] 发布于 2009-01-01 08:05:00
填充颜色请参考前几天的帖子《如何对空心的图形进行填充》。
画四边形可用画线语句。
板凳
chenji [专家分:0] 发布于 2009-01-01 09:48:00
[quote]可以使用API函数ExtFloodFill来填充这个三角形,举例如下:
Private Sub Pic3_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim c1 As Long
c1 = Pic3.Point(x, y)
If c1 = ColorLin Then Exit Sub '如果鼠标处的颜色与画线颜色相同退出
Pic3.FillColor = 255 '这是用于填充的颜色
ExtFloodFill Pic3.hdc, x, y, c1, 1
End Sub
程序运行时在你画的图形中间任意一点用鼠标点一下即可,其中ColorLin是画线的颜色[/quote]
看了,这个使用鼠标填充啊,而且是一个点一个点的填充,能否再根据我的情况讲的清楚一些啊,主要是我这个程序有好几万个不规则的四边形呢,画四边形可以用循环,那填充颜色具体怎么操作啊??
3 楼
一江秋水 [专家分:9680] 发布于 2009-01-01 17:52:00
你看了,试了没有?如果没有试,怎能断定是“一个点一个点的填充”?只能说是“一个块一个块”地填充(一个块就是一个四边形)。试一下以下代码:
Private Declare Function ExtFloodFill Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long, ByVal wFillType As Long) As Long
Private Sub Command1_Click()
Line (30, 30)-(ScaleWidth - 150, ScaleHeight - 150), 0, B '这是一个块
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim c1 As Long
c1 = Point(x, y)
FillStyle = 0
FillColor = 255 '这是用于填充的颜色
ExtFloodFill hdc, x \ 15, y \ 15, c1, 1
End Sub
要想点一下就填充好所有的四边形,稍微想下办法就可以实现的。
好几万个四边形,屏幕装得下吗?
我来回复