24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1334  |  回复: 8
本帖产生 1 个 EPI ,点击这里进行查看

xiangling1

金虫 (正式写手)

[求助] AE+c#让某一图元居中,闪烁

下面的代码,为何不能实现闪烁,请高手指点哈?

            //初始化图形容器对象
           IGraphicsContainer pContainer = axMapControl1.Map as IGraphicsContainer;
            //删除要素
           pContainer.DeleteAllElements();

            //点样式
           ISimpleMarkerSymbol pSimpleMarkerSymbol = new SimpleMarkerSymbolClass();
            pSimpleMarkerSymbol.Color = GetRGBColor(255,0,0);//取色
           pSimpleMarkerSymbol.Size = 3;
            IMarkerElement pMarkerElement = new MarkerElementClass();
            pMarkerElement.Symbol = pSimpleMarkerSymbol;
            IElement pElement = pMarkerElement as IElement;
            pElement.Geometry = pFeature.Shape;
            int nIndex = 0;
            pContainer.AddElement(pMarkerElement as IElement, nIndex);
            //居中显示
           axMapControl1.CenterAt((IPoint)pFeature.Shape);
            Application.DoEvents();
            axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, pContainer, axMapControl1.ActiveView.Extent);
            axMapControl1.FlashShape(pFeature.Shape, 4, 300, pSimpleMarkerSymbol);

[ Last edited by xiangling1 on 2011-6-27 at 13:19 ]
回复此楼
黄沙百战穿金甲,不破楼兰终不还!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

蓝色天空2380

至尊木虫 (小有名气)

路过,学习~\(≧▽≦)/~啦啦啦
自己选择的路,跪着也要把它走完!
2楼2011-06-28 22:27:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiangling1

金虫 (正式写手)

引用回帖:
Originally posted by 蓝色天空2380 at 2011-06-28 22:27:09:
路过,学习~\(≧▽≦)/~啦啦啦

3楼2011-06-28 22:53:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ChaunceyH

金虫 (正式写手)

你的代码我也看不出来有什么问题。。。
好运。。。
我决了个定,多看文章少灌水
4楼2011-06-29 17:09:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kuaixiTotti

金虫 (小有名气)

英超煮帅

【答案】应助回帖

xiangling1(金币+5): 多谢,我先试一下。我跟踪代码,颜色可以获取到的。我们再讨论,多谢 2011-07-01 13:30:34
//初始化图形容器对象
            IGraphicsContainer pContainer = axMapControl1.Map as IGraphicsContainer;
            //删除要素
            pContainer.DeleteAllElements();

            //点样式
            ISimpleMarkerSymbol pSimpleMarkerSymbol = new SimpleMarkerSymbolClass();
            pSimpleMarkerSymbol.Color = GetRGBColor(255, 0, 0);//取色
            pSimpleMarkerSymbol.Size = 10;
            IMarkerElement pMarkerElement = new MarkerElementClass();
            pMarkerElement.Symbol = pSimpleMarkerSymbol;
            IElement pElement = pMarkerElement as IElement;
            pElement.Geometry = pFeature.Shape;
            int nIndex = 0;
            pContainer.AddElement(pMarkerElement as IElement, nIndex);
            //居中显示
            //IEnvelope env = pFeature.Shape.Envelope;
            //IPoint pt = new PointClass();
            //pt.X = (env.XMin + env.XMax) / 2;
            //pt.Y = (env.YMin + env.YMax) / 2;

            //IPoint pt = pFeature.Shape as IPoint;
            //IEnvelope env = new EnvelopeClass();
            //env.PutCoords(pt.X - 1000,pt.Y - 1000,pt.X +1000,pt.Y +1000);

            axMapControl1.CenterAt((IPoint)pFeature.Shape);
            Application.DoEvents();           
            
            axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, pContainer, axMapControl1.ActiveView.Extent);
            
            axMapControl1.FlashShape(pFeature.Shape, 4, 300, pSimpleMarkerSymbol);      

我采用相同的代码,在我这边可以实现高亮显示,其中楼主有一个自定义的方法,GetColor(),可能是这个方法的问题,下面是我重写的这个方法:

public IColor GetRGBColor(int red, int green, int blue)
        {
            IRgbColor pColor = new RgbColorClass();
            pColor.Red = red;
            pColor.Green = green;
            pColor.Blue = blue;
            return pColor as IColor;
        }
如果程序中报出什么错误,请楼主提供出来,以便分析原因。
做自己认为正确的事情
5楼2011-07-01 11:03:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiangling1

金虫 (正式写手)

引用回帖:
Originally posted by kuaixiTotti at 2011-07-01 11:03:06:
//初始化图形容器对象
            IGraphicsContainer pContainer = axMapControl1.Map as IGraphicsContainer;
            //删除要素
            pContainer.DeleteAllElements();

            //点样 ...

我的那段代码可以实现高亮,但是没有闪烁!
黄沙百战穿金甲,不破楼兰终不还!
6楼2011-07-01 13:34:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiangling1

金虫 (正式写手)

引用回帖:
Originally posted by ChaunceyH at 2011-06-29 17:09:21:
你的代码我也看不出来有什么问题。。。
好运。。。

多谢,我的代码不能实现闪烁,其他的都对,也不报错
黄沙百战穿金甲,不破楼兰终不还!
7楼2011-07-01 13:35:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kuaixiTotti

金虫 (小有名气)

英超煮帅

【答案】应助回帖

★ ★
nono2009(金币+2, EPI+1): 鼓励应助,问题已解决 2011-07-06 20:29:28
那应该没问题了,楼主可以换一台机器试试,说不定是机器问题,另外可以适当修改闪烁的次数以及间隔时间
axMapControl1.FlashShape(pFeature.Shape, 4, 300, pSimpleMarkerSymbol);   
可以将 “4”和 “300”修改下,看看有没有效果
做自己认为正确的事情
8楼2011-07-06 09:58:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

夜阑人静

木虫 (著名写手)

可以尝试一下IHookAction接口
9楼2011-07-31 14:06:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 xiangling1 的主题更新
信息提示
请填处理意见