VC++开发GIS系统(259)重绘注释功能实现
发布时间: 2016-06-27
所属分类: VC++开发GIS系统
前文《VC++开发GIS系统(258)获取可视范围的所有注释》实现了重绘注释的一个重要函数 getAllLabel
,用于获取可视范围内的所有注释,接下来的工作是实现重绘注释的功能。
在文章《VC++开发GIS系统(94)窗口的重绘(四)》中已经实现了点文件的重绘,《VC++开发GIS系统(164)重绘线之更新重绘函数》实现了线文件的重绘。《VC++开发GIS系统(217)重绘区功能实现》实现了区的重绘。本文将继续完善displayAllGraphs函数,实现注释文件的重绘。
函数完善
找到malagisView.cpp中的displayAllGraphs函数,更新代码如下:
//重绘函数
void CmalagisView::displayAllGraphs()
{
upadteTree();
for (size_t i = 0; i < mNode.size(); i++)
{
if (mNode[i].isOpen == true)
{
//重绘点文件
if (mNode[i].fileType==L"mpt")
{
//先获取所有符合条件的点
CPointIO pio;
vector<malaPointFile>allPoints;
pio.getAllPoint(mScreen, allPoints,mNode[i].filePath);
//再依次画点
malaCDC dc(this,mScreen);
for (size_t j = 0; j < allPoints.size();j++)
{
dc.pointDrawAuto(allPoints[j].m_point, allPoints[j].m_pointpro);
}
if (allPoints.size())
allPoints.clear();
}
//重绘线文件
if (mNode[i].fileType == L"mle")
{
//先获取可视范围所有的线
CLineIO lio;
vector<malaLineFile>allLines;
lio.getAllLines(mScreen, allLines, mNode[i].filePath);
//再依次画区
malaCDC dc(this, mScreen);
for (size_t j = 0; j < allLines.size();j++)
{
dc.lineDrawAll(allLines[j].mLine,allLines[j].mLinePro);
}
if (allLines.size())
allLines.clear();
}
//重绘区文件
if (mNode[i].fileType == L"mpn")
{
//先获取可视范围所有的线
CPolyIO lio;
vector<malaPolyFile>allPolys;
lio.getAllPolys(mScreen, allPolys, mNode[i].filePath);
//再依次画区
malaCDC dc(this, mScreen);
for (size_t j = 0; j < allPolys.size(); j++)
{
dc.polyDrawAuto(allPolys[j].mPoly, allPolys[j].mPolyPro);
}
if (allPolys.size())
allPolys.clear();
}
//重绘注释文件
if (mNode[i].fileType == L"mll")
{
//先获取可视范围所有的注释
CLabelIO lio;
vector<malaLabelFile>allLabels;
lio.getAllLabel(mScreen, allLabels, mNode[i].filePath);
//再依次画
malaCDC dc(this, mScreen);
for (size_t j = 0; j < allLabels.size(); j++)
{
dc.textDraw(allLabels[j].mLabel, allLabels[j].mLabelPro);
}
if (allLabels.size())
allLabels.clear();
}
}
}
}
思路为先获取所有显示范围的注释,然后依次绘图。其中 getAllLabel
参考文章《VC++开发GIS系统(258)获取可视范围的所有注释》, textDraw
参考文章《VC++开发GIS系统(250)绘制文字的函数》
详细代码可以参考:GitHub
相关阅读
声明
1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。
2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。
手机阅读
公众号关注
知识星球
手机阅读
最新GIS干货
私享圈子