Overview
|
One of the drawing features which makes many of the Windows controls draw attractively is
the use of single pixel on-off dotted lines. For example, the TreeView control uses these
to draw lines, and they are often used in bounding box selections and drag and drop operations.
Unfortunately VB doesn't have any built in methods to draw single pixel dotted lines (although
you could use, erm, PSet to draw the dots, as long as you didn't mind waiting for
a couple of days whilst VB completed drawing the line). This is because Windows doesn't provide
a Pens which draw in this style either, and VB's line drawing support exclusively uses the Pen
features provided by GDI. So how do the controls draw dotted lines?
|
Drawing Pixel-Accurate Dotted Lines
|
To draw pixel-accurate patterns you use a GDI object called a Pattern Brush, which is a
brush object created from a monochrome bitmap. You can either fill areas using this brush with
the FillRect function or you can select the brush into a device context and use the
PatBlt function to draw a rectangular area. The advantage of the PatBlt function
is it allows you to specify a Raster Operation constant, such as PATINVERT which XORs the
brush with the background. This is really helpful if you are creating a selection box,
because XORing the same brush twice into an area leaves the area the same as when you started.
Pattern brushes automatically adjust foreground and background colours to match the device
context they are being used in. The black pixels map to the foreground colour and the
white pixels to the background.
|
Demonstration
|
The demonstration project includes a class, cDottedBrush which creates a chessboard pattern
brush, and demonstrates how to draw lines and fill areas using the brush on screen.
|
|