颜色填充解决方案
上一个帖子的解决方案:Option Explicit
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
Dim X0, Y0 As Double
Dim X(1 To 5), Y(1 To 5) As Double
Dim Xtop0, Ytop0, Xbot0, Ybot0 As Double
Private Sub tianchong()
Dim i As Integer
Dim Xhalf, Yhalf As Double
Dim Kx, Ky As Double
Dim Xpixel(1 To 5), Ypixel(1 To 5) As Double
Picture1.ScaleMode = 3
Picture1.AutoRedraw = True
Picture1.ForeColor = vbRed
Picture1.FillColor = vbBlack
Picture1.FillStyle = 0
Kx = Picture1.Width / (Xbot0 - Xtop0)
Ky = Picture1.Height / (Ybot0 - Ytop0)
Xpixel(1) = Kx * X(1): Ypixel(1) = Ky * Y(1)
Xpixel(2) = Kx * X(2): Ypixel(2) = Ky * Y(2)
Xpixel(3) = Kx * X(3): Ypixel(3) = Ky * Y(3)
Xpixel(4) = Kx * X(4): Ypixel(4) = Ky * Y(4)
Xpixel(5) = Kx * X(5): Ypixel(5) = Ky * Y(5)
' For i = 1 To 5
' MsgBox Xpixel(i): MsgBox Ypixel(i)
' Next i
' MsgBox Picture1.Width: MsgBox Picture1.Height
Picture1.Line (Xpixel(1), Ypixel(1))-(Xpixel(2), Ypixel(2))
Picture1.Line -(Xpixel(3), Ypixel(3))
Picture1.Line -(Xpixel(4), Ypixel(4))
Picture1.Line -(Xpixel(5), Ypixel(5))
Picture1.Line -(Xpixel(1), Ypixel(1))
'
X0 = (Xpixel(1) + Xpixel(2) + Xpixel(3) + Xpixel(4) + Xpixel(5)) / 5
Y0 = (Ypixel(1) + Ypixel(2) + Ypixel(3) + Ypixel(4) + Ypixel(5)) / 5
MsgBox X0: MsgBox Y0
Call ExtFloodFill(Picture1.hdc, X0, Y0, vbRed, 0)
End Sub
Private Sub Form_Load()
Xtop0 = 0: Ytop0 = 0
Xbot0 = 100: Ybot0 = 100
Form1.ScaleMode = 3
X(1) = 20: Y(1) = 20
X(2) = 40: Y(2) = 20
X(3) = 60: Y(3) = 30
X(4) = 40: Y(4) = 40
X(5) = 20: Y(5) = 40
Call tianchong
Picture1.Scale (Xtop0, Ytop0)-(Xbot0, Ybot0)
Picture1.Line (40, 40)-(50, 50), RGB(255, 0, 0)
End Sub