你可以使用其它的映射模式:如:MM_LOMETRIC、MM_LOENGLISH、MM_HIMETRIC、MM_HIENGLISH。以上映射模式下,你作图的单位是设定的,也就是说,不会和输出设备的分辨率有关。

解决方案 »

  1.   

    你可以使用其它的映射模式:如:MM_LOMETRIC、MM_LOENGLISH、MM_HIMETRIC、MM_HIENGLISH。以上映射模式下,你作图的单位是设定的,也就是说,不会和输出设备的分辨率有关。
      

  2.   

    是啊,但是我用下面的代码
    hFont=CreateFont(100,...);
    SetMapMode(hdcPrint,MM_HIMETRIC);
    if(hdcPrint!=NULL)
    {
    if(StartDoc(hdcPrint,&di)>0)
    if(StartPage(hdcPrint)>0)
    {
    SelectObject(hdcPrint,hFont);
    TextOut(hdcPrint,left,top,text,strlen(text));
    ... ...
    打印出来差别在十倍的样子啊,一个字很小一毫米大,一个半公分大,而且坐标系统也不一样,一台是上x,一台是下x
    为什么呢?
      

  3.   

    MM_LOMETRIC:每个逻辑单位相当于0.1mm
    MM_LOENGLISH:每个逻辑单位相当于0.01inch
    MM_HIMETRIC:每个逻辑单位相当于0.01mm
    MM_HIENGLISH:每个逻辑单位相当于0.001inch
    详细介绍,请参见MSDN中关于SetMapMode()的说明。
      

  4.   

    msdn看了,可是用着就不对了,呵呵~~
      

  5.   

    而且字体的大小和SetMapMode中的设置无关,CreateFont(100,...)还是100点而不是100个01.mm或100个0.01inch,这样也无法作到一样大啊
      

  6.   

    CreateFont()中nHeight和nWidth是以逻辑单位计,你得作一下转换。
      

  7.   

    xixi 我碰到过。在StartPage后开始设置映射模式
      

  8.   

    还有其它的设置也要在StartPage后设置