Советы тем, кто программирует на VB & VBA

Листинг 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 

возврат


Наш канал на Youtube

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует