|
| ArcObject开发中颜色的处理 |
| 08-02-13 22:16:33 作者:Ren 出处:Ren.cnblogs.com |
|
首先给大家介绍一个网站ColorBrewer,我们在制作专题图时,都要根据地图的内容来选择合适的颜色主题,比如,表现降水的多采用蓝色,表现高温多采用红色,表现沙尘多采用黄色。然后根据等级来分出不同的色阶。ColorBrewer为我们提供了一个很好的参考,你可以选择等级的数量,此网站默认的是不能大于10个级别,然后选择一个主色调。接下来它会为你生成每个等级的颜色值,并可以转换成各种格式。

其实这个功能我们可以通过AO中的IAlgorithmicColorRamp来实现,并且不会有等级多少的限制,用法就是传递给它起始和结束的颜色,然后通过CreateRamp就可以生成其间渐变的各个颜色值。
示例的代码在此下载。
在编写这段代码的过程中我遇到了这样的问题,AO生成的IColor对象,不能直接转换成.net提供的Color对象。这样就需要我们手工来完成提取IColor的R,G,B颜色,然后初始化一个Color对象。其中提取R,G,B的值用到了按位运算。
undefined
undefined
int
R
=
color.RGB
&
0xff
;
int
G
=
(color.RGB
&
0xff00
)
/
0x100
;
int
B
=
(color.RGB
&
0xff0000
)
/
0x10000
;
试验的结果转换的Color对象颜色是正确的,而直接通过FromArgb(color.RGB)得到的是错误的,尽管FromArgb接受一个32bit的颜色参数值。
希望能帮大家少走弯路。 (本文已被浏览 次) | | |
|
发布人:admin 推荐给好友: |
上篇新闻: 下篇新闻: | |
相关评论 |
| |
|
| → 发表我的评论 |
|
|
|
尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法; |
|
本站有权保留或删除您发表的任何评论内容; | | |
| |
|