我通过CFontDialog选定了楷体四号字体,然后pDC->SetMapMode(MM_LOMETRIC);
0.1mm一个单位,但是我发现绘制在视图里特别小,打印御览时也特别小。
和word里选定的四号字体大小相差很多倍,这是怎么回事?//设置映射模式
void CFontView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
// TODO: Add your specialized code here and/or call the base ass
pDC->SetMapMode(MM_LOMETRIC);
CView::OnPrepareDC(pDC, pInfo);
}//选择字体
void CFontView::OnViewFont()
{
// TODO: Add your command handler code here
CFontDialog dlg(&m_lfText);
if(dlg.DoModal()==IDOK)
{
dlg.GetCurrentFont(&m_lfText);
Invalidate();
}
}//绘出字体
void CFontView::OnDraw(CDC* pDC)
{
CFontDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CFont newFont,*pOldFont;
newFont.CreateFontIndirect(&m_lfText);
pOldFont=pDC->SelectObject(&newFont);
pDC->TextOut(50,-50,"你好,创建字体成功");
pDC->SelectObject(pOldFont);
0.1mm一个单位,但是我发现绘制在视图里特别小,打印御览时也特别小。
和word里选定的四号字体大小相差很多倍,这是怎么回事?//设置映射模式
void CFontView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
// TODO: Add your specialized code here and/or call the base ass
pDC->SetMapMode(MM_LOMETRIC);
CView::OnPrepareDC(pDC, pInfo);
}//选择字体
void CFontView::OnViewFont()
{
// TODO: Add your command handler code here
CFontDialog dlg(&m_lfText);
if(dlg.DoModal()==IDOK)
{
dlg.GetCurrentFont(&m_lfText);
Invalidate();
}
}//绘出字体
void CFontView::OnDraw(CDC* pDC)
{
CFontDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CFont newFont,*pOldFont;
newFont.CreateFontIndirect(&m_lfText);
pOldFont=pDC->SelectObject(&newFont);
pDC->TextOut(50,-50,"你好,创建字体成功");
pDC->SelectObject(pOldFont);
{ CView::OnPrepareDC(pDC, pInfo);
pDC->SetMapMode(MM_ANISOTROPIC); //转换坐标映射方式
CSize size = CSize(1024, 728);
pDC->SetWindowExt(size); //确定窗口大小
//得到实际设备每逻辑英寸的象素数量
int xLogPixPerInch = pDC->GetDeviceCaps(LOGPIXELSX);
int yLogPixPerInch = pDC->GetDeviceCaps(LOGPIXELSY);
//得到设备坐标和逻辑坐标的比例
long xExt = (long)size.cx * xLogPixPerInch/122 ;
long yExt = (long)size.cy * yLogPixPerInch/122 ;
pDC->SetViewportExt((int)xExt, (int)yExt);
}
CFormView::OnPrepareDC(pDC, pInfo);
怎样能做到打印出来时和word里面设置的同型号字体一样大?
CPrintInfo* pInfo
CRect m_printrect=pInfo->m_rectDraw;
CFont font;
LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT));
lf.lfHeight =A2_FONT_HEIGHT*m_printrect.Height()/A4_PHEIGHT;
lf.lfWidth =A2_FONT_WIDTH*m_printrect.Width()/A4_PWIDTH;
lf.lfWeight=700;
VERIFY(font.CreateFontIndirect(&lf));
CFont* def_font = pDC->SelectObject(&font);