Листинг 2. Модуль Flood.frm — демонстрационный пример практического
использования процедуры Paint
Option Explicit
Private m_X As Single
Private m_Y As Single
Private Sub Command1_Click()
' перерисовываем картинку
Call DrawShapes(Picture1, cboFillColor)
End Sub
Private Sub Form_Load()
Dim i As Long
' Начальная установка параметров и элементов управления
' Формирование списков
Call FillColorList(cboFillColor)
Call FillColorList(cboBorderColor)
Call FillStyleList(cboFillStyle)
Option1(1).Value = True
'Для режима FLOODFILLSURFACE цвет границы не нужен
cboBorderColor.Enabled = False
BorderLabel.Enabled = False
'
Set Me.Icon = Nothing
Me.Show
Call DrawShapes(Picture1, cboFillColor)
cboFillColor.ListIndex = 3
cboBorderColor.ListIndex = 0
cboFillStyle.ListIndex = 0
End Sub
Private Sub Picture1_Click()
Dim MyBorderColor As Long
Dim MyBorderColor1 As Long
Dim MyFillColor As Long
Dim MyFillStyle As FillStyleConstants
Dim MyFlags As FillModes
' установка цвета и стиля заполнения
MyFillColor = CheckSysColor _
(cboFillColor.ItemData(cboFillColor.ListIndex))
MyFillStyle = cboFillStyle.ItemData(cboFillStyle.ListIndex)
MyFlags = Option1(0).Value + 1 ' режим заливки
' Формирование параметра BorderColor
If MyFlags = FLOODFILLBORDER Then ' цвет границы контура
MyBorderColor = cboBorderColor.ItemData(cboBorderColor.ListIndex)
End If
' выполняем заливку
Call Paint(Picture1, m_X, m_Y, MyFillColor, _
MyFillStyle, MyBorderColor, MyFlags)
End Sub
Private Sub Picture1_MouseDown _
(Button As Integer, Shift As Integer, X As Single, Y As Single)
' Фиксируем координаты нажатия мыши
m_X = X
m_Y = Y
End Sub
Private Sub Option1_Click(Index As Integer)
If Index = 0 Then
' Для режима FLOODFILLBORDER гарантированный контур "без дырок"
' сформирован в этом примере только СИНЕГО цвета
cboBorderColor.ListIndex = 1
' но можно попробовать и другие цвета (может повезет)
cboBorderColor.Enabled = True
BorderLabel.Enabled = True
Else 'Для режима FLOODFILLSURFACE цвет границы не нужен
cboBorderColor.Enabled = False
BorderLabel.Enabled = False
End If
End Sub