VC 打印出来的图片很小 为什么我打印出来的图片超级小?网上看了很多资料,可是没用啊。求大神指导 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是我以前做的一个打印程序// 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; //pDC->SetViewportExt((int)xExt,(int)yExt); //设置视口大小 //CView::OnPrepareDC(pDC, pInfo); /*CRect rect; pDC->SetMapMode(MM_LOMETRIC); GetClientRect(rect); pDC->SetViewportOrg(rect.Width()/2,rect.Height()/2);*/}void CdatabaseView::OnPrint(CDC* pDC, CPrintInfo* 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; pDC->SetViewportExt((int)xExt,(int)yExt); //设置视口大小 CScrollView::OnPrint(pDC, pInfo);} vc数符转换问题 swprintf函数问题. 急<求一个数学式子的VC表达式 软件打包 高手指教,请新来的斑竹帮忙!!!谢谢 小弟在迷茫中,想成功的GGJJ们指条生路!感谢关注! GetLastError()是怎么实现的? 关于五子棋实现算法的问题~~~ 90分~~~~ 关于逻辑坐标和设备坐标?.................请进。 VB高手和API函数高手留下你的QQ号或EMAIL交过朋友吧。我的EMAIL:[email protected],QQ:402834 关于list control控件的问题求大神啊 单文档中创建对话框关于前向声明的问题,江湖救急~~~在线等!!
// 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;
//pDC->SetViewportExt((int)xExt,(int)yExt); //设置视口大小
//CView::OnPrepareDC(pDC, pInfo);
/*CRect rect;
pDC->SetMapMode(MM_LOMETRIC);
GetClientRect(rect);
pDC->SetViewportOrg(rect.Width()/2,rect.Height()/2);*/
}
void CdatabaseView::OnPrint(CDC* pDC, CPrintInfo* 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;
pDC->SetViewportExt((int)xExt,(int)yExt); //设置视口大小
CScrollView::OnPrint(pDC, pInfo);
}