VC++ 6.0下GIS打印输出控制的实现
2010-06-15 20:40:01 来源:WEB开发网通过扑获鼠标信息获取选择区域的最小、最大坐标,经坐标变换得到print_x1、print_y2、print_x2、print_y1,利用裁剪函数进行图幅裁剪,将裁剪区域进行输出,这里不在赘述。
屏幕选择区域、全图打印通过OnDraw(CDC* pDC)来实现,具体定义如下:
void CBoundaryView::OnDraw(CDC* pDC)
{
…………………………
if(pDC->IsPrinting())
{
pDC->SetMapMode(MM_LOMETRIC);
print_flag=1; //打印标志
if(!print_selection)//全图输出时
{ //因为1个单位为0.01厘米
print_scale=(float)(100.0*map_wide/(xmax-xmin));//坐标变换比例
}
else if(print_selection) //选择区域打印时
{
print_scale=(float)(100.0*map_wide/(print_x2-print_x1));
}
}
else //非打印时
{
print_scale=1;
print_flag=0;
}
…………………………
if(print_flag==0)
{
DrawVectorMap(const char *MapFile);
}
else if(print_flag==1) //打印输出时
{
DrawVectorMap(const char *MapFile,CDC* pDC);
}
……………………
}
打印结束后,恢复屏幕视图
void CBoundaryView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{
DrawVectorMap(const char *MapFile);//恢复当前屏幕
InvalidateRect(NULL,TRUE);
print_flag=0;
print_selection=0;
…………………
更多精彩
赞助商链接