http://lh5.google.com/image/farproc/RluNiEoxQ4I/AAAAAAAAAlo/fUUEJfmGq_s/s144/RGB24-spectrum.jpg1、使用Windows API画出这个图像。不是先保存一个图片,然后贴到DC上。
2、给出光谱上的某点坐标,算出(不是从屏幕上取出)该点的颜色值(RGB)

解决方案 »

  1.   

    http://blog.csdn.net/Y___Y/archive/2006/12/11/1438365.aspx
      

  2.   

    http://www.farproc.com/RGB24-spectrum.bmp
      

  3.   

    如果顶楼的图片打不开,看这里备用图片:
    http://www.farproc.com/RGB24-spectrum.bmp
      

  4.   

    int nWidth = 20;
    int nR=255,nG=0,nB=0;
    COLORREF clr;
    POINT pt;
    pt.x = 10;
    pt.y = 10;//从10点开始画
    for (;nR>=0&&nG<256;)//画红到黄
    {

    for(int j=0;j<nWidth;j++)
    {
    pDC->SetPixel(pt,RGB(nR,nG,nB));
    pt.y++;
    }
    nG+=5;//间隔大点要不太多了,可以通过这个调整
    pt.y = 10;
    pt.x++;
    }
    pt.y = 10;//从10点开始画
    nG = 255;
    for (;nR>=0;)//画黄到绿
    {

    for(int j=0;j<nWidth;j++)
    {
    pDC->SetPixel(pt,RGB(nR,nG,nB));
    pt.y++;
    }
    nR-=5;//间隔大点要不太多了,可以通过这个调整
    pt.y = 10;
    pt.x++;
    }
    pt.y = 10;//从10点开始画
    nR = 0; nG = 255;
    for (;nB<256;)//画绿到青
    {

    for(int j=0;j<nWidth;j++)
    {
    pDC->SetPixel(pt,RGB(nR,nG,nB));
    pt.y++;
    }
    nB+=5;//间隔大点要不太多了,可以通过这个调整
    pt.y = 10;
    pt.x++;
    }
      

  5.   

    在OnDraw中画的,只画了一半,
    可以封装一下。盛下的同理,
    其实可以在一个bmp dc上画的,
      

  6.   

    具体的位置对应的rGB值,你可以在画的时候吧色彩映射到
    一个COLORREF数组中,然后根据鼠标点在画的区域中的位置
    对应到数组中就可以了。
      

  7.   

    cosobin(cosobin):
    你的这个代码画出来的只是水平方向的渐变。而原图在垂直方向上也是有渐变的。
      

  8.   

    你可以把这个图片保存到本地,放大看看就清楚了:
    http://www.farproc.com/RGB24-spectrum.bmp
      

  9.   

    1、我不清楚是不是垂直渐变,但是你给的例子和原来的不一样。如果要实现这样的,我直接用几个GradientFill 就搞定了,也不会在这里开帖子了。
    2、不经验不经验的问题。需求就是这样子的。