解决方案 »

  1.   

    获取某个点的颜色,用bitmap的GetPixel
      

  2.   

    下图有很长一段是绿色,也就是G分量值接近255,R和B接近0,知道这个规律就好办了
    起始的黄色记为颜色a, 终止的蓝色记为b,则大致的变换过程为(省略号表示那一段不变或者微量的变化):
    R:   a.R -> 0.........   0 -> b.R
    G:   a.G -> 255...255 -> b.G
    B:   a.B -> 0.........   0 -> b.B
      

  3.   

    问题大致解决了,但是限制了用户的选色,只能选择固定饱和度(255)固定亮度的颜色。
    先做一个 按照  红橙黄绿青蓝紫红  变化的RGB分量 点阵
     public static float[,] colors = new float[,] { { 255f, 255f, 0, 0, 0, 255f, 255f }, { 0, 255f, 255f, 255f, 0, 0, 0 }, { 0, 0, 0, 255f, 255f, 255f, 0 } };//颜色点阵
    得到的颜色根据色调值的比例(起始颜色色调和终止颜色色调已知),从点阵中取值。大概就是这么的原理,目的是根据 HSB (主要是H)颜色求RGB颜色。