怎么样可以打印出指定大小(以毫米为单位)的文字,比如打印高10毫米,宽6毫米的文字,谢谢

解决方案 »

  1.   

    TEXTMETRIC tm;    pDC->SetMapMode(MM_LOMETRIC);
      
       // for PrintPageFooter's benefit
        
         font1.CreateFont(-40, 0, 0, 0, 400, FALSE, FALSE,
                        0, ANSI_CHARSET, OUT_DEFAULT_PRECIS,
                        CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
                        DEFAULT_PITCH | FF_MODERN, "宋体");     CFont* pOldFont1 = (CFont*) (pDC->SelectObject(&font1));
        
        pDC->GetTextMetrics(&tm);
    pDC->TextOut(500,-830, "60");
      

  2.   

    BOOL CreateFont(
       int nHeight,
       int nWidth,
       int nEscapement,
       int nOrientation,
       int nWeight,
       BYTE bItalic,
       BYTE bUnderline,
       BYTE cStrikeOut,
       BYTE nCharSet,
       BYTE nOutPrecision,
       BYTE nClipPrecision,
       BYTE nQuality,
       BYTE nPitchAndFamily,
       LPCTSTR lpszFacename 
    );
    请问nHeight = -40,nWeight = 400有什么讲究吗?还有nHeight是什么单位?
      

  3.   

    CDC::
    SetMode
    CreateFont
    根据当前的mode,算算。
      

  4.   

    nHeight是指定字体高,通常指定它就可以了,而不必指定nWidth,如果你要指定nWidth的话,系统也会根据的指定的值来找最接近的字体匹配。
    而nWeight是字体的重,不太容易理解,那么你可以指定几个不同的值做个测试就知道字体重是什么了。字体重相当于字体线条的宽窄,越大就越接近黑体。
    打印时,字体的大小控制,是需要创建字体,可以用API函数或者MFC的CFont来创建字体,然后用打印机的设备上下文CDC,调用其SelectObject函数将刚刚创建的字体选入,再输出字符时,字体就改变了。
      

  5.   

    怎么计算字体的高(lf.lfHeight)和毫米之间的关系呢?
      

  6.   

    int cxInch = pDC->GetDeviceCaps(LOGPIXELSX);
    int cyInch = pDC->GetDeviceCaps(LOGPIXELSY);得到每英寸的橡数。然后
    m_cx = (double)cxInch/25.4;
      m_cy = (double)cyInch/25.4;
    就得到每毫米的像素。
    这个是在MM_TEXT映射模式下
    至于其他的映射模式,就是你指定的高度
      

  7.   

    pDC->SetMapMode(MM_LOMETRIC);
    font1.CreateFont(-40, 0, 0, 0, 400, FALSE, FALSE,
                      0, ANSI_CHARSET, OUT_DEFAULT_PRECIS,
                      CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
                      DEFAULT_PITCH | FF_MODERN, "宋体");
    CFont* pOldFont1 = (CFont*) (pDC->SelectObject(&font1));
    是不是这样就能打印出高为4mm的文字来呢?