WEB开发网
开发学院软件开发VC VC++ 6.0下GIS打印输出控制的实现 阅读

VC++ 6.0下GIS打印输出控制的实现

 2010-06-15 20:40:01 来源:WEB开发网   
核心提示:二、分页控制分页方法为从左至右,从上到下;void CBoundaryView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo){// 获取页面高、宽mpageheight=pDC->GetDeviceCaps(VERTSIZE);//单位为毫米mpagewidth=pD

二、分页控制

分页方法为从左至右,从上到下;

void CBoundaryView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
// 获取页面高、宽
mpageheight=pDC->GetDeviceCaps(VERTSIZE);//单位为毫米
mpagewidth=pDC->GetDeviceCaps(HORZSIZE);
xpage=mpagewidth;
ypage=mpageheight;
//计算打印页数
npagex=(int)xwide/xpage+(xwide>xpage*(int)(xwide/xpage));
npagey=(int)yhigh/ypage+(yhigh>ypage*(int)(yhigh/ypage));
npage=npagex*npagey;
pInfo->SetMinPage(1);
pInfo->SetMaxPage(npage);
}

计算每页的打印原点

void CBoundaryView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
// TODO: Add your specialized code here and/or call the base class
int nrow,ncol;
if(pInfo==NULL)
return;
ncol=(pInfo->m_nCurPage-1)%npagex+1;//列位置
if(pInfo->m_nCurPage%npagex==0)
nrow=pInfo->m_nCurPage/npagex;
else
nrow=pInfo->m_nCurPage/npagex+1;//行位置
//////////////////////////////////////计算打印起始点坐标
if(!print_selection)//全图打印
{
printstartx=xmin+(float)((ncol-1)*(double)((xmax-xmin)/(float)npagex));//获取打
//印起始点坐标
printstarty=ymin-(float)((nrow-1)*(double)((ymax-ymin)/(float)npagey));
}//xmin、ymin为全图的最小坐标,xmax、ymax为全图的最大坐标
else if(print_selection)//选择区域打印输出
{ //计算打印起始点坐标
printstartx=print_x1+(float)((ncol-1)*(double)((print_x2-print_x1)/(float)npagex));
printstarty=print_y2-(float)((nrow-1)*(double)((print_y1-print_y2)/(float)npagey));
}// print_x1、print_y2为选择区域的最小坐标,print_x2、print_y1为选择区域的最
//大坐标
CView::OnPrepareDC(pDC, pInfo);
}

三、屏幕选择区域、全图打印

定义选择区域打印函数

void CBoundaryView::OnPrintSelection() //选择区域打印
{
draw_selection=1; //选择区域打印标志
………………………
print_selection=1;//设置为选择打印
}

Tags:VC GIS 打印

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接