爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 9230|回复: 11

meteoinfo二次开发中如何设置某一图层线条的粗细?

[复制链接]

新浪微博达人勋

发表于 2012-7-16 23:10:48 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
  1.      private void LoadLayers()
  2.         {
  3.             layersLegend1.ActiveMapFrame.MapView.LockViewUpdate = true;

  4.             //市区界
  5.             string aFile = Application.StartupPath + @"\Shp\NT_Dist.shp";
  6.             MapLayer aLayer = MapDataManage.OpenLayer(aFile);
  7.             
  8.             aLayer.LegendScheme.breakList[0].Color = Color.WhiteSmoke;
  9.             layersLegend1.ActiveMapFrame.AddLayer(aLayer);

  10.             //乡镇界
  11.             aFile = Application.StartupPath + @"\Shp\NT_County.shp";
  12.             aLayer = MapDataManage.OpenLayer(aFile);
  13.             //aLayer.TransparencyPerc = 1;
  14.             //aLayer.LegendScheme.breakList[0].Color = Color.Aqua;
  15.             //((PolyLineBreak)aLayer.LegendScheme.breakList[0]).Size = 2;
  16.             
  17.             layersLegend1.ActiveMapFrame.AddLayer(aLayer);

  18.             //乡镇名
  19.             aFile = Application.StartupPath + @"\Shp\NT_res3.shp";
  20.             aLayer = MapDataManage.OpenLayer(aFile);
  21.             ((PointBreak)aLayer.LegendScheme.breakList[0]).Color = Color.Red;
  22.             aLayer.Expanded = true;
  23.             layersLegend1.ActiveMapFrame.AddLayer(aLayer);

  24.             //Label city name
  25.             VectorLayer cityLayer = (VectorLayer)aLayer;
  26.             cityLayer.LabelSet.FieldName = "NAME";
  27.             cityLayer.LabelSet.AvoidCollision = true;
  28.             cityLayer.LabelSet.LabelAlignType = MeteoInfoC.Legend.AlignType.Center;
  29.             cityLayer.LabelSet.XOffset = 0;
  30.             cityLayer.LabelSet.YOffset = 0;
  31.             cityLayer.LabelSet.LabelFont = new Font("Arial", 8);
  32.             cityLayer.LabelSet.LabelColor = Color.Red;
  33.             cityLayer.LabelSet.DrawShadow = false;
  34.             cityLayer.LabelSet.ShadowColor = Color.White;
  35.             cityLayer.LabelSet.ColorByLegend = false;
  36.             cityLayer.AddLabels();


  37.             //Set layout map size
  38.             mapLayout1.ActiveLayoutMap.Left = 40;
  39.             mapLayout1.ActiveLayoutMap.Top = 40;
  40.             mapLayout1.ActiveLayoutMap.Width = 600;
  41.             mapLayout1.ActiveLayoutMap.Height = 400;

  42.             //Refresh
  43.             layersLegend1.ActiveMapFrame.MapView.LockViewUpdate = false;
  44.             layersLegend1.ActiveMapFrame.MapView.ZoomToExtent(118, 122,30, 32);
  45.             layersLegend1.Refresh();
  46.         }
最近刚接触meteoinfo,水平比较菜,呵呵,试了半天,不知道如何在二次开发中修改某一图层线条的粗细?上面是加载图层的代码,如果想修改市区界NT_Dist.shp图层线条的粗细,如何编写代码?谢谢!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-7-17 08:17:58 | 显示全部楼层
本帖最后由 MeteoInfo 于 2012-7-17 08:24 编辑

二次开发的教程你没有仔细看,MeteoInfo二次开发教程(三)
http://bbs.06climate.com/forum.p ... id=6780&fromuid=106

你的代码里已经有类似的语句了(被注释掉了)
//((PolyLineBreak)aLayer.LegendScheme.breakList[0]).Size = 2;

我估计你的图层应该是面图层,需要用PolygonBreak
((PolygonBreak)aLayer.LegendScheme.breakList[0].OutlineSize = 2;
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-7-17 16:02:39 | 显示全部楼层
刚试了下,我的图层确实是面图层的,应该用下面的那句话,在王老师的帮助下搞定了,谢谢王老师啦,幸亏发帖了,不然我自己在那边搞半天也搞不定呢,呵呵。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-7-17 16:03:50 | 显示全部楼层

刚试了下,我的图层确实是面图层的,应该用下面的那句话,在王老师的帮助下搞定了,谢谢王老师啦,幸亏发帖了,不然我自己在那边搞半天也搞不定呢,呵呵。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-7-18 15:40:30 | 显示全部楼层
膜拜啊!!!一定要学MeteoInfo
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-10-14 13:06:42 | 显示全部楼层
本帖最后由 wbriver 于 2012-10-14 13:10 编辑
MeteoInfo 发表于 2012-7-17 08:17
二次开发的教程你没有仔细看,MeteoInfo二次开发教程(三)
http://bbs.06climate.com/forum.p ... id=678 ...


王老师你好,更新了你刚发布的最新库文件,运行后出现几个小问题:
(1)PolygonBreak aPGB = (PolygonBreak)aLayer.LegendScheme.breakList[0];//设置某一图层线条粗细
错误提示:“MeteoInfoC.Legend.LegendScheme”不包含“breakList”的定义,并且找不到可接受类型为“MeteoInfoC.Legend.LegendScheme”的第一个参数的扩展方法“breakList”(是否缺少 using 指令或程序集引用?)
(2)polygonBreak2.TransparencyPercent = 50;
“MeteoInfoC.Legend.PolygonBreak”不包含“TransparencyPercent”的定义,并且找不到可接受类型为“MeteoInfoC.Legend.PolygonBreak”的第一个参数的扩展方法“TransparencyPercent”(是否缺少 using 指令或程序集引用?)
(3)polyLineBreak2.Style = System.Drawing.Drawing2D.DashStyle.Solid;
无法将类型“System.Drawing.Drawing2D.DashStyle”隐式转换为“MeteoInfoC.Legend.LineStyles”。存在一个显式转换(是否缺少强制转换?)
这个被我改成:polyLineBreak2.Style = (MeteoInfoC.Legend.LineStyles)System.Drawing.Drawing2D.DashStyle.Solid;应该可以的吧?

想请问王老师前面两个问题如何解决?谢谢!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-14 13:21:08 | 显示全部楼层
wbriver 发表于 2012-10-14 13:06
王老师你好,更新了你刚发布的最新库文件,运行后出现几个小问题:
(1)PolygonBreak aPGB = (Polygo ...

LegendScheme的breakList属性改为了LegendBreaks属性。

PolygonBreak里面的TransparencyPercent属性被去掉了,因为颜色(Color)本身可以设置透明度(Alpha)。

为了特殊线型的需求(比如锋线),增加了LineStyles枚举类,包含了DashStyle里的所有线型,可以用下面这句:polyLineBreak2.Style = LineStyles.Solid;
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-10-14 13:34:33 | 显示全部楼层
MeteoInfo 发表于 2012-10-14 13:21
LegendScheme的breakList属性改为了LegendBreaks属性。

PolygonBreak里面的TransparencyPercent属性被 ...

明白了!问题都解决了,呵呵~谢谢王老师!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-10-22 09:48:19 | 显示全部楼层
一定要二次编辑才能改变线宽么,我想突出某个省的某个市,同时加上北京,所以我想让省级边界突出,市级淡一些,应该怎么设置呢,不需要编程的方法有么,求教
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-10-22 09:52:48 | 显示全部楼层
还有可以修改高亮部分地图的颜色么,如图,我想突出北京和淄博,但是想用颜色区分一下,应该怎么做啊
12.png
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表