Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: VB4/32,VB5,VB6
Expertise: Intermediate
Mar 5, 2001

AreaFill - Fill an area with a solid color

Private Declare Function ExtFloodFill Lib "GDI32" (ByVal hDC As Long, _
    ByVal X As Long, ByVal Y As Long, ByVal colorCode As Long, _
    ByVal fillType As Long) As Long
Const FLOODFILLBORDER = 0
Const FLOODFILLSURFACE = 1

' Fill a region using the current color or brush
'   OBJ can be a form or a control that exposes
'       a device context (eg a picture box)
'   X,Y are given in the current system coordinates
'
' If BORDERCOLOR is specified, fills the area
'   enclosed by a border of that color
' If BORDERCOLOR is omitted, the area is filled with
'   the color now at coordinates (x,y), and any
'   different color is considered to a the border

Sub AreaFill(obj As Object, ByVal X As Long, ByVal Y As Long, _
    ByVal colorCode As Long, Optional borderColor As Variant)
    
    Dim x2 As Long, y2 As Long
    Dim saveFillStyle As Long
    Dim saveFillColor As Long
    
    With obj
        ' convert into pixel coordinates
        x2 = .ScaleX(X, .ScaleMode, vbPixels)
        y2 = .ScaleY(Y, .ScaleMode, vbPixels)
        
        ' save FillStyle and FillColor properties
        saveFillStyle = .FillStyle
        saveFillColor = .FillColor
        ' enforce new properties
        .FillStyle = 0
        .FillColor = colorCode
        
        If IsMissing(borderColor) Then
            ' get color at given coordinates
            borderColor = .Point(X, Y)
            ' change all the pixels with that color
            ExtFloodFill .hDC, x2, y2, borderColor, FLOODFILLSURFACE
        Else
            ExtFloodFill .hDC, x2, y2, borderColor, FLOODFILLBORDER
        End If

        ' restore properties
        .FillStyle = saveFillStyle
        .FillColor = saveFillColor
    End With

End Sub
Francesco Balena
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date