您的位置:首页 > 其它

VC中mapx图元颜色的改变

2012-07-25 00:43 176 查看
各位高人,我求VC中mapx图元颜色改变的方法。具体:

我在VC中嵌入了mapx控件,基本功能已经实现,现在想做到:当鼠标点击(单、双都可)某个图元(如矩形)时,该图元颜色改变;鼠标移动到另外某个图元并进行鼠标点击时,上一个颜色改变效果撤消,新图元变色效果出现!!!

万分感谢!!!!!!!!!!!!!!!

大家帮帮忙啊!!

大家帮帮忙啊!!怎么高手都眼睁睁的看着不说话啊??55555

我自己又写了段代码,想实现如下功能:

鼠标点击某个图元时,颜色改变。有1、2两个图层,1中主要是区域,2中主要是线。我自己感觉这段代码应该没有什么问题,可是点击后没有什么改变。

请高手帮忙!!!

void CMy001View::OnLButtonDown(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

CMapXLayers layers;

CMapXFeature mapxFeature1,mapxFeature2;

CMapXStyle mapxStyle;

CMapXLayer layer;

CMapXFeatures ftrs1,ftrs2;

CMapXPoint pnt;

layers = m_ctrlMapX.GetLayers();

ftrs1=layers.Item(1).SearchAtPoint(LPDISPATCH(pnt));

ftrs2=layers.Item(2).SearchAtPoint(LPDISPATCH(pnt));

mapxFeature1=ftrs1.Item(1);

mapxFeature2=ftrs2.Item(1);

if (mapxFeature1.GetType()==miFeatureTypeRegion)

{

pnt.CreateDispatch(pnt.GetClsid());

layer.SetOverrideStyle(true);

mapxStyle=mapxFeature1.GetStyle();

mapxStyle.SetRegionBackColor(miColorLimeGreen);

mapxFeature1.SetStyle(mapxStyle);

mapxFeature1.Update();

}

else if (mapxFeature2.GetType()==miFeatureTypeLine)

{

pnt.CreateDispatch(pnt.GetClsid());

layer.SetOverrideStyle(true);

mapxStyle=mapxFeature2.GetStyle();

mapxStyle.SetLineColor(miColorLimeGreen);

mapxFeature2.SetStyle(mapxStyle);

mapxFeature2.Update();

}

CFormView::OnLButtonDown(nFlags, point);

}

没有用vc做过,不过看你的代码中有layer.SetOverrideStyle(true); 这句让图层的样式替换为真,这是对整个图层里的所有图元进行同类型的样式改变,那么你对被选择图元所作的颜色改变都会看不出来的。

而且也看不出来当被选择图元在被取消选择后的恢复原色的代码啊。

谢谢楼上的,请详细指导下!!

前面的代码只要把layer.SetOverrideStyle(true); 这句不要应该可以看到改变的颜色吧。

还有设置区域颜色好像是用Style.RegionColor 属性吧

还有应该要用自定义工具或者箭头工具,如果用选择工具,它有自己的被选中后的样式,那样子不知道颜色会不会有冲突呢。

非常感谢,马上去试!!

感觉已经和正确的方法接近了,可是尝试了还是不行啊,感谢大家,继续求助!!

如果在选择之后变色的话,可以考虑对selection集合的样式做设置

恩,帮顶一下

恩,我也想知道

我对一个线图元是这样做的

pTempFeature.GetStyle().SetLineColor(32767);

pTempFeature.Update();

颜色就变了,其他的是不是也差不多阿?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: