ArcObject开发中颜色的处理

本文介绍了ColorBrewer网站及其在制作专题地图时如何选择合适的颜色主题,并使用IColor对象生成不同色阶的方法。此外,还探讨了IColor对象与.NET Color对象之间的转换技巧。
首先给大家介绍一个网站 ColorBrewer,我们在制作专题图时,都要根据地图的内容来选择合适的颜色主题,比如,表现降水的多采用蓝色,表现高温多采用红色,表现沙尘多采用黄色。然后根据等级来分出不同的色阶。 ColorBrewer为我们提供了一个很好的参考,你可以选择等级的数量,此网站默认的是不能大于10个级别,然后选择一个主色调。接下来它会为你生成每个等级的颜色值,并可以转换成各种格式。


其实这个功能我们可以通过AO中的IAlgorithmicColorRamp来实现,并且不会有等级多少的限制,用法就是传递给它起始和结束的颜色,然后通过CreateRamp就可以生成其间渐变的各个颜色值。

示例的代码 在此下载

在编写这段代码的过程中我遇到了这样的问题,AO生成的IColor对象,不能直接转换成.net提供的Color对象。这样就需要我们手工来完成提取IColor的R,G,B颜色,然后初始化一个Color对象。其中提取R,G,B的值用到了按位运算。

int  R  =  color.RGB  &   0xff ;
int  G  =  (color.RGB  &   0xff00 /   0x100 ;
int  B  =  (color.RGB  &   0xff0000 /   0x10000 ;

试验的结果转换的Color对象颜色是正确的,而直接通过FromArgb(color.RGB)得到的是错误的,尽管FromArgb接受一个32bit的颜色参数值。

希望能帮大家少走弯路。

转载于:https://www.cnblogs.com/renji/archive/2008/02/13/ColorRamp.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值