'' 用FloodFill填充,注意已把你写的vbYellow改为上面画线的颜色vbRed了 Dim nRet As Long nRet = FloodFill(Picture1.hdc, 80, 90, vbRed) If nRet = 0 Then MsgBox "nret1 error!", vbExclamation End If
'' 用ExtFloodFill填充,同样修改了你代码中的边界颜色为画线颜色vbRed nRet = ExtFloodFill(Picture1.hdc, 80, 90, vbRed, 0) If nRet = 0 Then MsgBox "nret2 error!", vbExclamation End IfEnd Sub
Picture1.Line (500, 1000)-(1500, 1000), vbRed
Picture1.Line (1500, 1000)-(1500, 500), vbRed
Picture1.Line (1500, 500)-(500, 500), vbRed
Dim nRet As Long
nRet = FloodFill(Picture1.hdc, 800, 900, vbYellow)
If nRet = 0 Then
MsgBox "nret1 error!", vbExclamation
End If
nRet = ExtFloodFill(Picture1.hdc, 800, 900, vbYellow, 0)
If nRet = 0 Then
MsgBox "nret2 error!", vbExclamation
End If
1. FloodFill和ExtFloodFill中的颜色(也就是你写的vbYellow)是指到达边界的颜色,而不是填充色。
2. 所有API中指定的坐标值都应以像素为单位。
3. Picture1默认的填充方式是透明,所以即使你上述两项都对了,也看不到效果。
看下面我修改的你的代码:Private Sub Command1_Click()Picture1.FillColor = vbYellow ' 将填充色设置为黄色
Picture1.FillStyle = 0 ' 将填充方式设置为不透明的实体
Picture1.ScaleMode = 3 ' 将Picture1的坐标单位改为像素 ' 画矩形
Picture1.Line (50, 50)-(50, 100), vbRed
Picture1.Line (50, 100)-(150, 100), vbRed
Picture1.Line (150, 100)-(150, 50), vbRed
Picture1.Line (150, 50)-(50, 50), vbRed
'' 用FloodFill填充,注意已把你写的vbYellow改为上面画线的颜色vbRed了
Dim nRet As Long
nRet = FloodFill(Picture1.hdc, 80, 90, vbRed)
If nRet = 0 Then
MsgBox "nret1 error!", vbExclamation
End If
'' 用ExtFloodFill填充,同样修改了你代码中的边界颜色为画线颜色vbRed
nRet = ExtFloodFill(Picture1.hdc, 80, 90, vbRed, 0)
If nRet = 0 Then
MsgBox "nret2 error!", vbExclamation
End IfEnd Sub