windslash
路人甲
路人甲
  • 注册日期2005-01-07
  • 发帖数2
  • QQ
  • 铜币111枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:842回复:0

跪求解答!急啊!关于线形图层中一个部分变色的问题。

楼主#
更多 发布于:2005-03-15 22:34
<P>  是这样的,我有个一线型图层,这个图层是由很多线段组成的,每个线段都是一个CMoLine对象,我现在想同过一个button修改它的颜色</P>
<P>下面是我的代码:</P>
<P>void CHGGISView::ChangeLineColor(int nID)
{
 CMoRecordset recs; //图层的记录集
 CMoStrings strs; //MO的字符串类
 strs.CreateDispatch("MapObjects2.Strings");
 
 //得到图层数据中NAME字段的第条记录,保存在strs中。
 CMoMapLayer lay = m_map.GetLayers().Item(COleVariant("城区街道分析"));
 recs = lay.GetRecords();
 while(!recs.GetEof())
 {
  CMoFields mfs = recs.GetFields();
  CMoField mf = mfs.Item(COleVariant("城区街道分"));
  int i = mf.Get_Value().intVal;
  CString s;
  s.Format("%d",i);
  strs.Add(s);
 
  recs.MoveNext();
 }
 //改变区域颜色
 CMoValueMapRenderer vmRend;
 vmRend.CreateDispatch("MapObjects2.ValueMapRenderer");
 vmRend.SetValueCount(strs.GetCount());
 vmRend.SetField("城区街道分");
 for(int i=0; i< strs.GetCount(); i++)
 {
  //将保存的行政区名附给vmRend
  VARIANT V;
  V.vt = VT_I2;
  V.iVal = i;
  vmRend.SetValue(i, strs.Item(V));
  int iIndex = atoi(vmRend.GetValue(i));
  if(iIndex == nID)
  {
   vmRend.GetSymbol(i).SetColor(RGB(255,255,190));
  }
 }
 lay.SetRenderer(vmRend);
 m_map.Refresh();
}
但是一调用这个函数整个图层都没色了。请高手指点啊。谢谢。</P>
喜欢0 评分0
游客

返回顶部