devxlogo

AreaFill – Fill an area with a solid color

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 LongConst FLOODFILLBORDER = 0Const 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 borderSub 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 WithEnd Sub

devx-admin

Share the Post: