首页 / 浏览问题 / 组件GIS / 问题详情
如何获取并设置纯色填充符号的颜色
13EXP 2021年06月09日

想知道如何获取并设置一个纯色填充符号的颜色。

用GeoStyle.FillForeColor获取的颜色不正确。

1个回答

您好,GeoStyle.FillForeColor的默认值为 Color [A=255, R=189, G=235, B=255] ,该属性是填充模式为渐变填充时,该颜色为填充起始颜色。

如果您需要都在地图上进行应用纯色填充的话,有几种解决方案。

1.使用渐变填充模式,将填充符号的背景色、前景色均设为同色。

2.按您的颜色需求创建一个目标颜色的纯色矢量填充符号,应用于图层风。

3.使用自定义专题图,用颜色表达式字段设置颜色。

希望可以帮助到您!
于丁
1
9,653EXP 2021年06月10日
感谢,现在我知道了怎么设置一个类纯色填充符号,还有个疑问,能通过代码读取到这个纯色的颜色吗?
可以的,你读取对象颜色,或者这个填充符号的颜色都是可以的。
不好意思,我的意思是能通过代码读取到一个纯色填充的符号颜色吗?拿到一个GeoStyle之后,如果知道了它是纯色填充,能读取到颜色吗?
可以读取到,

1.您可以读取具体单个几何对象实体的GeoStyle拿到该对象颜色

2.从该图层的图层风格设置属性的GeoStyle中拿到该图层应用风格的符号颜色(SymbolFillBase.ForeColor)

通过GeoStyle类的属性,前景、背景、符号颜色均可读取。

读取到的颜色格式是Color [A=255, R=189, G=235, B=255] 。

A透明度,RGB混合颜色通道。

你好,就例如这个符号,我拿到GeoStyle之后,如何读取到Color [A=255, R=204, G=102, B=255]呢,我没有在开发帮助文档中找到纯色Symbol的信息,是否需要某种转换呢。

不需要转换啊,上也和您讲过,正常的色板应用都是一样的,颜色就是前景色。

渐变混色的终点色是背景色,即渐变色是前景色到背景色的渐变,纯色就是前景色到无色(不是白色 默认空值)。

就像ps和画图软件一样,口头讲的“纯色”就是值前景色+无背景色,您这边直接读我最开始回答您的前景色属性。
针对这个符号,我拿到的前景色是黄色,并不是紫色,这种怎么办?还是说这种很少见?
不是少见,应该是不会发生,拿对对象的话肯定是正确的显示颜色,毕竟屏幕显示渲染也是读取的颜色属性。

您的这个GeoStyle是从哪里拿到的呢?拿的是什么的GeoStyle呢?
你可以看看这张图上,纯色符号编辑器打开是紫色,但是右侧的前景颜色是黄色。
能给个邮箱,我把工作空间发给你看看
不,您的这个截图是您在设置时编辑选的的颜色,一是使用纯色符号时您修改这个是没有效果的。

二是您代码去拿使用纯色符号的图层风格的GeoStyle和纯色符号对象的GeoStyle的前景色,就是这个纯色符号的颜色,不会是其它颜色的。

您可以代码实践操作一下。
您这边即使是在桌面端,应该也可以看到,在使用纯色填充符号的时候,只有您切换另一种符号,地图里的图斑颜色才会改变,在使用纯色填充符号是修改前景色、背景色是没有生效,不会变化的。
这个我是没有编辑的,打开就是这样。
另外我把这个工作空间放到百度云,你能帮忙看下吗?
链接:https://pan.baidu.com/s/1BdFY8SUxcVWR19ql8rCd5g
提取码:jfwi
这边面数据集应用紫色纯色图层填充风格,用IObject.net组件去取这个图层的GeoStyle和这个图层里单个对象的GeoStyle的前景色都是紫色的。

您这边可以用代码取了看一下的,您截图的是编辑器的设置,不是图层里的应用,纯色填充符号您编辑器这边前景色、背景色怎么调整修改都是无效的,同时也不会影响到实际图层风格的应用颜色,和您代码获取到的颜色。
不好意思再打扰下,我是采用以下代码获取图层的GeoStyle,你看看有什么问题吗?能麻烦告诉下如果获取图层单个对象的GeoStyle吗?

LayerSetting pLayerSetting = layer.AdditionalSetting;

LayerSettingVector pLayersettingVector = pLayerSetting as LayerSettingVector;

var geo_style =pLayersettingVector.Style;

我用代码仍然读取不到正确的紫色,你能提供一个完整地从打开工作空间到读取图层GeoStyle的代码示例吗?下面是map转出来的xml中的当前图层的颜色值。

您这边Idesktop用的版本是什么?

您新建一个工作空间,新建数据源,面数据集,绘制面数据,应用紫色填充风格也会这样吗?
10 i 版本,刚刚新建一个工作空间,新建数据源,面数据集,绘制面数据,应用紫色填充风格也是这样。

您好,我这边刚刚用了10.1.2,10.1.1和9D版的测试了下,获取到的都是正确的。

这边还是建议您直接获取图层风格的填充符号的style去拿到颜色。

感谢laugh,我能够读取到了,问题在于我一直采用的是读取GeoStyle.FillForeColor而不是SymbolFillBase.ForeColor。

嗯嗯 成功就好yes

...