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

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

 2008-11-14 19:37:04 来源:WEB开发网   
核心提示: 通过扑获鼠标信息获取选择区域的最小、最大坐标,经坐标变换得到print_x1、print_y2、print_x2、print_y1,VC++6.0下GIS打印输出控制的实现(4),利用裁剪函数进行图幅裁剪,将裁剪区域进行输出,这里不在赘述,屏幕选择区域、全图打印通过OnDraw(CDC*

通过扑获鼠标信息获取选择区域的最小、最大坐标,经坐标变换得到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;
…………………

上一页  1 2 3 4 

Tags:VC GIS 打印

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