INF: Simulating CreatePatternBrush() on a High-Res Printer

ID Number: Q74793

3.00

WINDOWS

Summary:

When a pattern brush is used to fill an area of the page on the

printer, the printer's high resolution will cause a fine pattern to

lose definition and appear as a shade of gray.

Brushes that are created with the CreatePatternBrush() function are 8

pixels by 8 pixels (8 x 8 pixels) in size. On a 300 dots-per-inch

(dpi) laser printer, the pattern will be 0.027 inches wide.

To create a pattern that gives similar effects on the screen as on the

printer, it is necessary to compare the screen resolution to the

printer resolution, and to compensate for the differences.

For example, if the video display is 100 dpi (typical of a VGA), and

the printer is 300 dpi (a typical laser printer), the bit must be

three times larger in each direction. The following compares a screen

bitmap and a printer bitmap:

10101010 111000111000111000111000

01010101 111000111000111000111000

10101010 111000111000111000111000

01010101 000111000111000111000111

10101010 000111000111000111000111 and so forth

01010101 000111000111000111000111

10101010 111000111000111000111000

01010101 111000111000111000111000

111000111000111000111000

Video 000111000111000111000111

000111000111000111000111

000111000111000111000111

111000111000111000111000

111000111000111000111000

111000111000111000111000

000111000111000111000111

000111000111000111000111

000111000111000111000111

111000111000111000111000

111000111000111000111000

111000111000111000111000

Printer

However, since the pattern brush is always 8 x 8 pixels, a different

approach must be used when printing:

1. Use the StretchBlt() function to create, from the video bitmap, the

24 x 24 pixel bitmap for the printer.

2. Manually "tile" this bitmap into the region to be painted.