On this page:
get-color
get-stipple
get-gradient
get-style
get-transformation
set-color
set-stipple
set-style

brush% : class?

  superclass: object%

A brush is a drawing tool with a color and a style that is used for filling in areas, such as the interior of a rectangle or ellipse. In a monochrome destination, all non-white brushes are drawn as black.

In addition to its color and style, a brush can have a brush stipple bitmap. Painting with a stipple brush is similar to calling draw-bitmap with the stipple bitmap in the filled region.

As an alternative to a color, style, and stipple, a brush can have a gradient that is a linear-gradient% or radial-gradient%. When a brush has a gradient and the target for drawing is not monochrome, then other brush settings are ignored. With a gradient, for each point in a drawing destination, the gradient associates a color to the point based on starting and ending colors and starting and ending lines (for a linear gradient) or circles (for a radial gradient); a gradient-assigned color is applied for each point that is touched when drawing with the brush.

By default, coordinates in a stipple or gradient are transformed by the drawing context’s transformation when the brush is used, but a brush can have its own brush transformation that is used, instead. A brush transformation has the same representation and meaning as for get-transformation in dc<%>.

A brush style is one of the following (but is ignored if the brush has a gradient and the target is not monochrome):

To draw outline shapes (such as unfilled boxes and ellipses), use the 'transparent brush style.

To avoid creating multiple brushes with the same characteristics, use the global brush-list% object the-brush-list, or provide a color and style to set-brush in dc<%>.

(new brush% [[color color] 
  [style style] 
  [stipple stipple] 
  [gradient gradient]] 
  [transformation transformation]) 
  (is-a?/c brush%)
  color : (or/c string? (is-a?/c color%)) = "black"
  style : 
(one-of/c 'transparent 'solid 'opaque
          'xor 'hilite 'panel
          'bdiagonal-hatch 'crossdiag-hatch
          'fdiagonal-hatch 'cross-hatch
          'horizontal-hatch 'vertical-hatch)
 = 'solid
  stipple : (or/c #f (is-a?/c bitmap%)) = #f
  gradient : 
(or/c #f
      (is-a?/c linear-gradient%)
      (is-a?/c radial-gradient%))
 = #f
  transformation : 
(or/c #f (vector/c (vector/c real? real? real?
                             real? real? real?)
                    real? real? real? real? real?))
Creates a brush with the given color, brush style, brush stipple, gradient, and brush transformation (which is kept only if the gradient or stipple is non-#f). For the case that the color is specified using a name, see color-database<%> for information about color names; if the name is not known, the brush’s color is black.

(send a-brush get-color)  (is-a?/c color%)
Returns the brush’s color.

(send a-brush get-stipple)  (or/c (is-a?/c bitmap%) #f)
Gets the brush stipple bitmap, or #f if the brush has no stipple.

(send a-brush get-gradient)  
(or/c (is-a?/c linear-gradient%)
      (is-a?/c radial-gradient%)
      #f)
Gets the gradient, or #f if the brush has no gradient.

(send a-brush get-style)
  
(one-of/c 'transparent 'solid 'opaque
          'xor 'hilite 'panel
          'bdiagonal-hatch 'crossdiag-hatch
          'fdiagonal-hatch 'cross-hatch
          'horizontal-hatch 'vertical-hatch)
Returns the brush style. See brush% for information about brush styles.

(send a-brush get-transformation)
  
(or/c #f (vector/c (vector/c real? real? real? real? real? real?)
                   real? real? real? real? real?))
Returns the brush’s brush transformation, if any.

If a brush with a stipple or gradient also has a transformation, then the transformation applies to the stipple or gradient’s coordinates instead of the target drawing context’s transformation; otherwise, the target drawing context’s transformation applies to stipple and gradient coordinates.

(send a-brush set-color color)  void?
  color : (is-a?/c color%)
(send a-brush set-color color-name)  void?
  color-name : string?
(send a-brush set-color red green blue)  void?
  red : (integer-in 0 255)
  green : (integer-in 0 255)
  blue : (integer-in 0 255)
Sets the brush’s color. A brush cannot be modified if it was obtained from a brush-list% or while it is selected into a drawing context.

For the case that the color is specified using a string, see color-database<%> for information about color names.

(send a-brush set-stipple bitmap    
  [transformation])  void?
  bitmap : (or/c (is-a?/c bitmap%) #f)
  transformation : 
(or/c #f (vector/c (vector/c real? real? real?
                             real? real? real?)
                    real? real? real? real? real?))
   = #f
Sets or removes the brush stipple bitmap, where #f removes the stipple. The brush transformation is set at the same time to transformation. See brush% for information about drawing with stipples.

If bitmap is modified while is associated with a brush, the effect on the brush is unspecified. A brush cannot be modified if it was obtained from a brush-list% or while it is selected into a drawing context.

(send a-brush set-style style)  void?
  style : 
(one-of/c 'transparent 'solid 'opaque
          'xor 'hilite 'panel
          'bdiagonal-hatch 'crossdiag-hatch
          'fdiagonal-hatch 'cross-hatch
          'horizontal-hatch 'vertical-hatch)
Sets the brush style. See brush% for information about the possible styles.

A brush cannot be modified if it was obtained from a brush-list% or while it is selected into a drawing context.