万分感谢!!!!!!!!!!!!!!!
大家帮帮忙啊!!
大家帮帮忙啊!!怎么高手都眼睁睁的看着不说话啊??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();
颜色就变了,其他的是不是也差不多阿?