回 帖 发 新 帖 刷新版面

主题:急求高手:画任意四边形并填充颜色的问题,多谢

请问,已知任意四点的坐标:(x1,y1),(x1,y2),(x2,y3),(x2,y4),如何根据这四点画出四边形,并填充颜色,比如说黑色或红色?
能否写出大体程序来?
多谢

回复列表 (共3个回复)

沙发

填充颜色请参考前几天的帖子《如何对空心的图形进行填充》。
画四边形可用画线语句。

板凳


[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 楼

你看了,试了没有?如果没有试,怎能断定是“一个点一个点的填充”?只能说是“一个块一个块”地填充(一个块就是一个四边形)。试一下以下代码:

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

要想点一下就填充好所有的四边形,稍微想下办法就可以实现的。
好几万个四边形,屏幕装得下吗?

我来回复

您尚未登录,请登录后再回复。点此登录或注册