Главная страница | назад





Article #17771: How do I draw using LoEnglish Mapping Modes?

 Question and Answer Database

FAQ2771D.txt   How do I draw using LoEnglish Mapping Modes?
Category   :Windows API
Platform    :All
Product    :All 32 bit  

Question:
How do I draw using LoEnglish Mapping Modes?


Answer:
You will need to call the Windows API functions SetMapMode() and
SetViewportOrgEx() to change the mapping mode and the origin, then
draw using coordinates that are oriented from the bottom of the
canvas.

Notes:

1) Change the drawing mode back as soon as you are finished drawing,
or you may get unexpected results.

2) Screen measurements are based on a concept of "Logical Pixels" and
may not always reflect a true measurement. Printers should give
satisfactory results when measurement are compared against a ruler.

Example:

procedure TForm1.Button1Click(Sender: TObject);
var
  OldMapMode : integer;
  OldOrigin : TSize;
  Inch : integer;
begin
  Inch := 100;
  with Form1.Canvas do begin
    SetViewportOrgEx(Handle,
                     0,
                     ClientHeight,
                     @OldOrigin);
    OldMapMode := SetMapMode(Handle,
                             MM_LOENGLISH);
    Rectangle(1 * inch, 1 * inch,
              0 * inch, 0 * inch);
    SetMapMode(Handle,
               OldMapMode);
    SetViewportExtEx(Handle,
                     OldOrigin.cx,
                     OldOrigin.cy,
                     nil);
  end;
end;

7/16/98 4:31:28 PM
 

Last Modified: 01-SEP-99