爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3297|回复: 4

C#类库二次开发 如何自定义配色方案?

[复制链接]

新浪微博达人勋

发表于 2018-4-3 00:49:20 | 显示全部楼层 |阅读模式

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

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

x

最近在尝试用群主的类库,做雷达CAPPI的显示,主要参考demo和类库的源代码。

问题:
需要将雷达图的5dbZ设置为透明,在代码中载入自己定义的配色方案,
然后使用aLayer.LegendScheme.LegendBreaks[0].Color = Color.FromArgb(0, Color.White);将白色设置100%透明。
运行代码后,并没有将5dbZ设置成透明。通过图层配置,可以看到在Layer Property中已经设置为100了,我手动点击applay后,透明才起作用。

同样的方法,在CreateGridFillLayer是可以起作用的,但是CreateRasterLayer不行。
群主您看下我的代码,是那里使用错误了?万分感谢。

捕获2.PNG
  1. //Create a MeteoDataInfo object
  2.             MeteoDataInfo aDataInfo = new MeteoDataInfo();

  3.             //Open GrADS data file
  4.             string aFile = Application.StartupPath + "\\Sample\\test.txt";
  5.             aDataInfo.OpenSuferGridData(aFile);

  6.             //Get GridData
  7.             GridData press = aDataInfo.GetGridData("var");

  8.             //Create a legend scheme
  9.             bool hasUndefData = false;
  10.             LegendScheme aLS = LegendManage.CreateLegendSchemeFromGridData(press,
  11.                         LegendType.GraduatedColor, ShapeTypes.Polygon, ref hasUndefData);

  12.             //导入配色方案
  13.             aLS.ImportFromXMLFile("radar.lgs");

  14.             //Create a Raster layer
  15.             RasterLayer aLayer = DrawMeteoData.CreateRasterLayer(press, "Raster_RADAR", aLS);

  16.             //设置透明色
  17.             aLayer.LegendScheme.LegendBreaks[0].Color =   Color.FromArgb(0, Color.White);
  18.             


  19.             //Add layer
  20.             layersLegend1.ActiveMapFrame.AddLayer(aLayer);
  21.             layersLegend1.ActiveMapFrame.MoveLayer(aLayer.Handle, 2);
  22.             layersLegend1.Refresh();
复制代码


密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-4-3 00:50:36 | 显示全部楼层
我的配色方案radar.lgs :

  1. <MeteoInfo file="4444" type="LegendScheme">
  2.   <LegendScheme FieldName="" LegendType="GraduatedColor" ShapeType="Polygon" BreakNum="15" HasNoData="False" MinValue="0" MaxValue="120" UNDEF="-9999">
  3.     <Breaks>
  4.       <Break Caption="0 - 5" StartValue="0" EndValue="5" Color="#FFFFFF" IsNoData="False" />
  5.       <Break Caption="5 - 10" StartValue="5" EndValue="10" Color="#66FFFF" IsNoData="False" />
  6.       <Break Caption="10 - 15" StartValue="10" EndValue="15" Color="#00A2E8" IsNoData="False" />
  7.       <Break Caption="15 - 20" StartValue="15" EndValue="20" Color="#56E1FA" IsNoData="False" />
  8.       <Break Caption="20 - 25" StartValue="20" EndValue="25" Color="#03CF0E" IsNoData="False" />
  9.       <Break Caption="25 - 30" StartValue="25" EndValue="30" Color="#1A9807" IsNoData="False" />
  10.       <Break Caption="30 - 35" StartValue="30" EndValue="35" Color="#D9AC71" IsNoData="False" />
  11.       <Break Caption="35 - 40" StartValue="35" EndValue="40" Color="Red" IsNoData="False" />
  12.       <Break Caption="40 - 45" StartValue="40" EndValue="45" Color="#FF934A" IsNoData="False" />
  13.       <Break Caption="45 - 50" StartValue="45" EndValue="50" Color="#FF0000" IsNoData="False" />
  14.       <Break Caption="50 - 55" StartValue="50" EndValue="55" Color="#CC0000" IsNoData="False" />
  15.       <Break Caption="55 - 60" StartValue="55" EndValue="60" Color="#9B0000" IsNoData="False" />
  16.       <Break Caption="60 - 65" StartValue="60" EndValue="65" Color="#EC15EC" IsNoData="False" />
  17.       <Break Caption="65 - 70" StartValue="65" EndValue="70" Color="#820B82" IsNoData="False" />
  18.       <Break Caption="70 - 120" StartValue="70" EndValue="120" Color="#B86CD0" IsNoData="False" />
  19.     </Breaks>
  20.   </LegendScheme>
  21. </MeteoInfo>
复制代码
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-4-3 09:11:38 | 显示全部楼层
孤蓝et 发表于 2018-4-3 00:50
我的配色方案radar.lgs :

先设置透明色,再生成RasterLayer
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-4-3 10:31:05 | 显示全部楼层
厉害了,楼主高见
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-4-3 20:00:05 | 显示全部楼层
本帖最后由 孤蓝et 于 2018-4-3 20:01 编辑
MeteoInfo 发表于 2018-4-3 09:11
先设置透明色,再生成RasterLayer

谢谢王老师指点,已经成功实现的透明色。万分感谢。

  1.             //Create a Raster layer
  2.             RasterLayer aLayer = DrawMeteoData.CreateRasterLayer(press, "Raster_RADAR", aLS);

  3.             //设置透明色
  4.             aLayer.LegendScheme.LegendBreaks[0].Color =   Color.FromArgb(0, Color.White);
  5.             aLayer = DrawMeteoData.CreateRasterLayer(press, "Raster_RADAR", aLS);
复制代码
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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