Enlarge the Printed Image

Recall from Add Scrolling to Scribble, in Lesson 8, that when you specify a position for a GDI drawing function, you use logical coordinates. You learned how CScrollView moves the origin of this coordinate system. You can also control the scale of this coordinate system, that is, the physical size of a logical unit. By default, GDI considers logical units to be equal to device units, meaning that 1 logical unit equals 1 pixel on the screen. This interpretation of logical units is called the MM_TEXT mapping mode.

Since Scribble uses MM_TEXT mapping mode, it considers a stroke that is 100 units long to be 100 pixels long. The physical size of the stroke depends on the device that displays it. For example, a device unit on a typical laser printer is 1/300 of an inch, which is considerably smaller than a pixel on a typical screen. As a result, the images that Scribble produces on a printer are much smaller than those it displays on the screen.

To keep Scribble from producing tiny images on the printer, you need a mapping mode that ensures that a drawing remains the same size no matter what device displays it. Windows provides several such mapping modes, known as metric mapping modes. In these modes, GDI considers logical units to be equal to real-world units (or metrics), such as millimeters or inches.