MyException - 我的异常网
当前位置:我的异常网» VC/MFC » VC 打印出来的图片小小的

VC 打印出来的图片小小的

www.MyException.Cn  网友分享于:2013-03-14  浏览:50次
VC 打印出来的图片很小
为什么我打印出来的图片超级小?网上看了很多资料,可是没用啊。。。。求大神指导

------解决方案--------------------
这是我以前做的一个打印程序
// CdatabaseView 打印

BOOL CdatabaseView::OnPreparePrinting(CPrintInfo* pInfo)
{
    int count=datavec.size();
int row=0;
int page=count/20+1;
pInfo->SetMaxPage(page);

CPrintDialog print(false);
if(print.DoModal()==IDOK)
{
CDC printed;
printed.Attach(print.GetPrinterDC());
DOCINFO pdoc;
pdoc.cbSize=sizeof(pdoc);
//pdoc.lpszDocName=L"pdoc";
pdoc.lpszDatatype=NULL;
pdoc.fwType=NULL;
pdoc.lpszOutput=NULL;
//if(printed.StartDoc(&pdoc)>=0)
//{
LOGFONT logfont;
memset(&logfont,0,sizeof(LOGFONT));
logfont.lfHeight=75;
CFont font;
CFont *oldfont=NULL;
if(font.CreateFontIndirect(&logfont))
oldfont=(CFont*)printed.SelectObject(&font);
        int i,j;
for(j=1;j<=page;j++)
    {
//pInfo->m_nCurPage;
printed.StartPage();
int x=800,y=560;//A4纸,页面中的位置,横向为x轴,纵向是y轴,A4 maxX=4000 maxY=7000 建议按字符大小为75,每页安排40条纪录,初试纪录开始位置为x=500 y=200
CString pageHead,pageBottom;
//pageHead.Format(_T("日志信息纪录统计表"));
//printed.TextOut(1500,100,pageHead); //打印页眉
//CString title;//设置标题栏
//title.Format(_T("序号                时间                      操作"));
//printed.TextOut(500,200,title); //打印页眉
//CString stt;
//stt.Format(_T("______________________________________________________________________________________")); 
//printed.TextOut(500,200+80,stt); //打印页眉
            for(i=0;(i<20)&&(row<count);i++)
{
CString record(_T(""));
CString str="   ";
long num=i+(j-1)*20;
record+=datavec[num].school+str+datavec[num].dept+str+datavec[num].major+str+datavec[num].dormy+str
    +datavec[num].pay+str+datavec[num].name+str+datavec[num].sex+str+datavec[num].no+str
+datavec[num].age+str+datavec[num].home;

printed.TextOut(x,y,record);
x+=80;
//printed.TextOut(x,y,stt);
y+=80;
row++;
}    
pageBottom.Format(_T("共%d页   第%d页"),page,j);
printed.TextOut(1500,y,pageBottom);
            printed.EndPage();//此页结束 
}  
font.DeleteObject();
if(oldfont!=NULL) 
printed.SelectObject(oldfont);
//printed.EndDoc();
    printed.DeleteDC();
}
return DoPreparePrinting(pInfo);
}
void CdatabaseView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
// TODO: 在此添加专用代码和/或调用基类
CScrollView::OnPrepareDC(pDC,pInfo);
//pDC->SetMapMode(MM_ANISOTROPIC); //转换坐标映射方式
//CSize size = CSize(800,560);
//pDC->SetWindowExt(size);//确定窗口的大小
////得到实际设备每逻辑英寸的像素数量
//int xLogPixelPerInch = pDC->GetDeviceCaps(LOGPIXELSX);
//int yLogPixelPerInch = pDC->GetDeviceCaps(LOGPIXELSY);

////得到设备坐标和逻辑坐标的比例
//long xExt = (long)size.cx * xLogPixelPerInch / 96;
//long yExt = (long)size.cy * yLogPixelPerInch / 96;

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有