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

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.


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

WEBINAR:

On-Demand

Application Security Testing: An Integral Part of DevOps


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