变密度显示是用一个连续变化的彩色谱表示地震数据的不同振幅。
   假设地震数据有M道,每一道有N个采样点。采样点的大小(振幅)处在-127.5—127.5之间。
   定义从红-》白-》蓝的颜色数组,有256种颜色,每一种颜色都与相应的振幅对应。
   用颜色将振幅表现出来。
   比如(M,N)为-127就用红显示这个点,(M,N)为0,就用白来显示,(M,N)为127就用蓝显示这个点。
   如何用vc实现这个功能啊?多谢高人前来指点迷津!

解决方案 »

  1.   

    定义颜色?你不知道颜色的类型还是不知道哪种颜色好? 
    如果是前者,RGB就是一种常见的颜色类型,至于后者,估计没有人有标准的答案,这得你自己一个颜色一个眼色测试,自己感觉视觉效果好即可
    至于怎么关联振幅,也就是什么振幅用什么颜色,也是一样,这个别人怎么可能给你一个规则让你进行对照呢?这得你自己试
      

  2.   

                
    定义颜色时我想   for(i=0;i<=定义的颜色个数;i++)
                      if(i<定义的颜色个数/2)
                        { 
                        color=(255,M,M)
                          其中M想个办法渐变127次变到(255,255,255)
                        }
                      if(i>定义的颜色个数/2)
                        {
                          再由(255-M,255-M,255)渐变127次变到(0,0,255)
                        }但是在对应具体的点时时候,如果振幅是-127.5——-126.5,color=(255,0,0)
    我去写代码的时候不可能每个点的振幅都用 if 去判断一下去对应颜色color吧! 那样不得几百次啊。不可能的。
    有没有更好的办法啊?谢谢!
      

  3.   

    比如你的负值对应颜色RGB中R,假设它的阀值(下限)是-M;正值对应RGB中的G,正值的阀值(上限)为+M;然后你的振幅可以是:
    -127.5——-126.5
    RGB((-127.5)/(-M)*255,0,A)————RGB(0,(126.5)/(+M)*255,A)
    振幅为0对应RGB(0,0,A)
    其中的-M可以和+M的绝对值不一样
      

  4.   

    颜色我不是给你计算出来啦吗,RGB中的R代表负值,G代表正值,B你自己设定一个固定的初始值就可以啦
      

  5.   

    RGB不就是颜色表吗,VC里面已经有啦啊,你直接用就行了,你选择什么颜色,不是有R(红)、G(绿)、B(蓝)三原色合成的吗,见MSDN:RGB
    The RGB macro selects a red, green, blue (RGB) color based on the arguments supplied and the color capabilities of the output device. COLORREF RGB(
      BYTE bRed,    // red component of color
      BYTE bGreen,  // green component of color
      BYTE bBlue    // blue component of color
    );
     
    Parameters
    cRed 
    Specifies the intensity of the red color. 
    cGreen 
    Specifies the intensity of the green color. 
    cBlue 
    Specifies the intensity of the blue color. 
    Return Values
    The return value is the resultant RGB color.