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):
'transparent — Draws with no effect (on the
interior of the drawn shape).
'solid — Draws using the brush’s color. If a
monochrome brush stipple is installed into the brush, black pixels
from the stipple are transferred to the destination using the
brush’s color, and white pixels from the stipple are not
transferred.
'opaque — The same as 'solid for a color
brush stipple. For a monochrome stipple, white pixels from
the stipple are
transferred to the destination using the destination’s
background color.
'xor — The same as 'solid, accepted
only for partial backward compatibility.
'hilite — Draws with black and a 0.3 alpha.
'panel — The same as 'solid, accepted
only for partial backward compatibility.
The following modes correspond to built-in brush stipples drawn in
'solid mode:
'bdiagonal-hatch — diagonal lines, top-left to bottom-right
'crossdiag-hatch — crossed diagonal lines
'fdiagonal-hatch — diagonal lines, top-right to bottom-left
'cross-hatch — crossed horizontal and vertical lines
'horizontal-hatch — horizontal lines
'vertical-hatch — vertical lines
However, when a specific brush stipple is installed into the brush,
the above modes are ignored and 'solid is
used, instead.
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 |
|
|
Returns the brush’s color.
Gets the
brush stipple bitmap, or
#f if the brush has no stipple.
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) |
|
|
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.
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.
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) |
|
|
A brush cannot be modified if it was obtained from a
brush-list% or while it is selected into a drawing
context.