一般情况是不应该变的,如果想变的话是可以的,自己把要标注的信息画上去了
public void Draw(ref IActiveView pActiveView)
{
if(m_Array.Count<1)return;
else
{
ClsFunction m_Function = new ClsFunction(pActiveView);//调用公共函数
double pTempDis=m_Function.ConvetToMapDistance(10,pActiveView.ScreenDisplay);
IEnvelope pEnve = pActiveView.Extent;
for(int i=0;i<m_Array.Count;i++)
{
IGeometry pGeom ;
IClone pClone;
LabelInfo pLabelInfo = m_Array.GetByIndex(i) as LabelInfo;
IPoint pPoit = new PointClass();
pGeom =pLabelInfo.m_Geometry;
pClone=pGeom as IClone ;
pPoit =pClone.Clone () as IPoint;
if(ClsGlobal.InEnve(pPoit.X,pPoit.Y,ref pEnve))//判断是否当前屏幕可视范围内
{
string strValue = pLabelInfo.Label;
IPoint mPoit = new PointClass();
mPoit.X = pPoit.X+ pTempDis;
mPoit.Y =pPoit.Y+ pTempDis;
IFormattedTextSymbol pTextSymbol = new TextSymbolClass();
System.Drawing.Font drawFont = new System.Drawing.Font(nFont, int.Parse(pFont), FontStyle.Regular);
pTextSymbol.Font =(stdole.IFontDisp) OLE.GetIFontDispFromFont(drawFont);//字体
pTextSymbol.Color=m_Function.CreateColor(panel1.BackColor.R,panel1.BackColor.G,panel1.BackColor.B);
pActiveView.ScreenDisplay.SetSymbol(pTextSymbol as ISymbol);
pActiveView.ScreenDisplay.DrawText(mPoit,strValue);
}
}
}
}
地图标注绘制方法
本文介绍了一种在地图应用中绘制标注信息的方法。该方法通过遍历存储的标注信息集合,利用公共函数将标注的位置转换为地图上的实际距离,并判断这些位置是否位于当前屏幕的可视范围内。对于位于可视范围内的标注,会进一步计算其显示位置并设置相应的字体样式及颜色,最后在地图上绘制出标注文本。
3628

被折叠的 条评论
为什么被折叠?



