Drawing to a bitmap-dc% with a color bitmap is guaranteed to
produce the same result as drawing into a canvas% instance
(with appropriate clipping and offsets). Thus, a bitmap-dc%
can be used for offscreen staging of canvas content.
Creates a new memory DC. If
bitmap is not
#f, it is
installed into the DC so that drawing commands on the DC draw to
bitmap. Otherwise, no bitmap is installed into the DC and
set-bitmap must be called before any other method
of the DC is called.
The same as
draw-bitmap-section, except that
dest-width and
dest-height cause the DC’s
transformation to be adjusted while drawing the bitmap so that the
bitmap is scaled; and, if the DC’s smoothing mode is
'unsmoothed, it is changed to
'aligned while
drawing.
Gets a rectangle of pixels in the bitmap, subject to the same rules
and performance characteristics of
get-pixel,
except that the block get is likely to be faster than the sequence of
individual gets. Also, the
bitmap% class also provides the
same method directly, so it is not necessary to select a bitmap into
a DC to extracts its pixel values.
The pixel RGB values and alphas are copied into pixels
(or just alpha values if just-alpha? is true). The first byte
represents an alpha value of the pixel at (x, y),
the second byte represents a red value of the pixel at (x,
y), the third byte is the green value, etc. In this way, the
first width * height * 4 bytes of
pixels are set to reflect the current pixel values in the
DC. The pixels are in row-major order, left to right then top to
bottom.
If the bitmap has an alpha channel, then the alpha value for each pixel
is always set in pixels.
If just-alpha? is false and the bitmap does not have an alpha
channel, then the alpha value for each pixel is set to 255. If
just-alpha? is true, then only the alpha value is set
for each pixel; if the bitmap has no alpha channel, then the alpha
value is based on each pixel’s inverted RGB average. Thus, when a
bitmap has a separate mask bitmap, the same pixels byte
string is in general filled from two bitmaps: one (the main image)
for the pixel values and one (the mask) for the alpha values.
If pre-multiplied? is true, just-alpha? is false,
and the bitmap has an alpha channel, then RGB values in the result
are scaled by the corresponding alpha value (i.e., multiplied by the
alpha value and then divided by 255).
Gets the bitmap currently installed in the DC, or
#f if no
bitmap is installed. See
set-bitmap for more
information.
Fills color with the color of the current pixel at position
(x, y) in the drawing context. If the color is
successfully obtained, the return value is #t, otherwise the
result is #f.
Sets a rectangle of pixels in the bitmap, unless
the DC’s current bitmap was produced by make-screen-bitmap or
make-bitmap in canvas% (in which case an exn:fail:contract exception is raised).
The pixel RGB values are taken from pixels. The first byte
represents an alpha value, the second byte represents a red value to
used for the pixel at (x, y), the third byte is a blue
value, etc. In this way, the first
width * height * 4 bytes of pixels
determine the new pixel values in the DC. The pixels are in row-major
order, left to right then top to bottom.
If just-alpha? is false, then the alpha value for each pixel is
used only if the DC’s current bitmap has an alpha channel. If
just-alpha? is true and the bitmap has no alpha channel, then each
pixel is set based only on the alpha value, but inverted to serve
as a mask. Thus, when working with bitmaps that have an associated mask
bitmap instead of an alpha channel, the same
pixels byte string is used with two bitmaps: one
(the main image) for the pixel values and one (the mask) for the
alpha values.
If pre-multiplied? is true, just-alpha? is false,
and the bitmap has an alpha channel, then RGB values in
pixels are interpreted as scaled by the corresponding alpha value
(i.e., multiplied by the alpha value and then divided by 255). If an
R, G, or B value is greater than its corresponding alpha value (which
is not possible if the value is properly scaled), then it is effectively
reduced to the alpha value.
Installs a bitmap into the DC, so that drawing operations on the bitmap
DC draw to the bitmap. A bitmap is removed from a DC by setting the
bitmap to #f.
A bitmap can be selected into at most one bitmap DC, and only when it
is not used by a control (as a label) or in a pen% or
brush% (as a stipple). If the argument to set-bitmap is already in use by another DC, a control, a
pen%, or a brush%, an exn:fail:contract exception is raised.
Sets a pixel in the bitmap.