Delphi32.com - Home!
| Home/News | Downloads | Forums | D32 Magazine | Resources | Info and Facts |  
 
 Drawing in scale without using Windows Mapping Modes?


How can I draw in scale without using Windows Mapping Modes?   

    You will need to use the Windows API function GetDeviceCaps() to retrieve the "logical" number of pixels per inch for the display in both the X and y directions, and multiply your coordinates by the returned values. 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. When printing, delete the lines for GetDc() and ReleaseDc() and simply pass Printer.Canvas.Handle to the GetDeviceCaps() function. Example:

    procedure TForm .Button Click(Sender: TObject);
    var
      dc : hdc;
      InchX : integer;
      InchY : integer;
    begin
      dc := GetDc(0);
      InchX := GetDeviceCaps(dc, LOGPIXELSX);
      InchY := GetDeviceCaps(dc, LOGPIXELSY);
      ReleaseDC(0, dc);
      Form .Canvas.Rectangle(Round(0 * InchX),
                             Round(0 * InchY),
                             Round( .5 * InchX),
                             Round( .5 * InchY));
    end;
    

     



  << Previous Faq     Complete List     Next Faq >>  



 
 Hits/month  2,500,000+ 
 Downloads
 (Since May 2000)
 7,393,709 
 Total Files  6,023 
 Forum msgs  7,670 
 Articles/FAQs  70+/900+ 
Kylix
Tips n Tricks
FAQs
Knowledge Base
Bug Listings
Articles
Books
Newsgroups
Links
Submissions
Testimonials
Advertising
Contact Us
About Us
Search Amazon:
Top Selling Software at Amazon

| Home/News | Downloads | Forums | Resources | Info and Facts | Testimonials |
  Site Search:
 


Comments/Problems: Webmaster@delphi32.com
Copyright © 1998-2006, Delphi32.com. All rights reserved.
Terms of Use