zoukankan      html  css  js  c++  java
  • 符号化Color(颜色)体系

    http://blog.sina.com.cn/s/blog_4ce8fd7c0100h4l0.html

    1.ArcGIS颜色模型

    ArcGIS提供Color(颜色)的模型有多种分别是:

    • RGB颜色模型:最常用,所有颜色都是通过红色(Red)、绿色(Green)、蓝色(Blue)这三原色的混合来显示。

    • CMY颜色模型:青(Cyan)、洋红(Magenta)和黄(Yellow)三种颜色的简写,是相减混色模式,用这种方法产生的颜色之所以称为相减色,主要用于印刷中。

    • HSV颜色模型:色彩(H),纯度(S),明度(V)。

    • Gray模型:没有彩色的,灰度图像由8位信息组成,并使用256级的灰色来模拟颜色层次。

    • HLS模型: Hue(色相)、Luminance(亮度)、Saturation(饱和度)。符号化Color(颜色)体系

    Color对象是一个抽象类,它包括5个子类:它有5个颜色子类,即CmykColor、RGBColor、HSVColor、HLSColor和GrayColor,它们可以使用IColor接口定义的方法设置颜色对象的基本属性。在ArcGIS engine中最常使用的两种颜色模型是RGB和HSV,RGB类实现IRgbColor接口,而HSV类则实现IHsvColor接口,两个接口分别定义了设置一个RGBColor对象和RGBColor对象需传递的值。

    private IRgbColor GetRGB(int r,int g,int b)

    {

    IRgbColor pRgbColor= new RgbColorClass();//构建一个RgbColorClass

    pRgbColor.Red = r;//设置Red属性
    pRgbColor.Green = g;//设置Green属性

    pRgbColor.Blue = b;//设置Blue属性
    return pRgbColor;

    }
    2.ColorRamp对象
    在地图符号化的过程中,需要的颜色常常不是一种,而是随机或有序产生的一组颜色。如果对某一个图层进行符号化需要上百种颜色,程序开发者肯定不能逐个产生出来。ColorRamp类的对象可以产生颜色带,这个类实现了IColorRamp接口,它定义了一系列颜色带的属性,如 Size(产生多少种颜色),Colors(颜色带 IEnumColor)。
    ColorRamp类是一个抽象类,它包括4个子类分别是:RandomColorRamp(随机颜色带)、PresetColorRamp(预设颜色带)、AlgorithmicColorRamp(起止颜色带)、MultiPartColorRamp(叠加颜色带)。

    RandomColorRamp
    使用HSV颜色模型来确定一串色

    PresetColorRamp
    预设的颜色模式,可存储13种颜色

    AlgorithmicColorRamp
    用起始颜色、终止颜色确定一个颜色带,起始、终止颜色使用HSV模型

    MultiPartColorRamp
    叠加产生颜色带

    在GIS应用开发中用到比较多得是RandomColorRamp(随机颜色带)和AlgorithmicColorRamp(起止颜色带)。
    AlgorithmicColorRamp是通过起止颜色来确定多个在这两个颜色之间的色带。AlgorithmicColorRamp类实现了两个接口:IColorRamp和IAlgorithmicColorRamp,两个接口之间是接口继承关系,后者包含了前者所有的方法和属性。
    3.生成颜色带实例
    private void button1_Click(object sender, EventArgs e)
    {

    //创建一个新AlgorithmicColorRampClass对象

    IAlgorithmicColorRamp algColorRamp = new AlgorithmicColorRampClass();

    /创建起始颜色对象

    IRgbColor startColor = new RgbColor();
    startColor.Red = 255;
    startColor.Green = 0;
    startColor.Blue = 0;

    //创建终止颜色对象

    IRgbColor endColor = new RgbColor();

    endColor.Red = 0;
    endColor.Green = 255;
    endColor.Blue = 0;

    //设置AlgorithmicColorRampClass的起止颜色属性
    algColorRamp.ToColor = startColor;
    algColorRamp.FromColor = endColor;

    //设置梯度类型
    algColorRamp.Algorithm = esriColorRampAlgorithm.esriCIELabAlgorithm;

    //设置颜色带颜色数量
    algColorRamp.Size = 5;

    //创建颜色带

    bool bture = true;
    algColorRamp.CreateRamp(out bture);

    //使用IEnumColors获取颜色带

    IEnumColors pEnumColors = null;
    pEnumColors = algColorRamp.Colors;

    //设置5个picturebox的背景色为产生颜色带的5个颜色

    this.pictureBox1.BackColor = ColorTranslator.FromOle(pEnumColors.Next().RGB);

    this.pictureBox2.BackColor = ColorTranslator.FromOle(pEnumColors.Next().RGB);

    this.pictureBox3.BackColor = ColorTranslator.FromOle(pEnumColors.Next().RGB);

    this.pictureBox4.BackColor = ColorTranslator.FromOle(pEnumColors.Next().RGB);

    this.pictureBox5.BackColor = ColorTranslator.FromOle(pEnumColors.Next().RGB);

    }

    RandomColorRamp对象产生随机颜色带,RandomColorRamp也需要设定一个范围,但是这个范围是HSV颜色模型的,颜色将在这个范围内随机出现。 RandomColorRamp类实现了IRandomColorRamp接口

    IRandomColorRamp pRandomColorRamp = new RandomColorRampClass();

    //** 制作一系列介于橘黄色和蓝绿色之间的随机颜色
    pRandomColorRamp.StartHue = 40;
    pRandomColorRamp.EndHue = 120;
    pRandomColorRamp.MinValue = 65;
    pRandomColorRamp.MaxValue = 90;
    pRandomColorRamp.MinSaturation = 25;
    pRandomColorRamp.MaxSaturation = 45;
    pRandomColorRamp.Size = 20;
    pRandomColorRamp.Seed = 23;

    bool bture = true;
    pRandomColorRamp.CreateRamp(out bture);

    IEnumColors pEnumColors = pRandomColorRamp.Colors

  • 相关阅读:
    如何解决加载动态链接库DLL失败,返回0,GetLastError返回错误码126
    如何实现点击激活窗体同时窗体不跑到最前覆盖其他窗体
    数据库04
    数据库03
    数据库02
    数据库01
    Linux02
    Linux01
    软件质量
    HTML04
  • 原文地址:https://www.cnblogs.com/adodo1/p/4328158.html
Copyright © 2011-2022 走看看