变密度显示是用一个连续变化的彩色谱表示地震数据的不同振幅。
假设地震数据有M道,每一道有N个采样点。采样点的大小(振幅)处在-127.5—127.5之间。
定义从红-》白-》蓝的颜色数组,有256种颜色,每一种颜色都与相应的振幅对应。
用颜色将振幅表现出来。
比如(M,N)为-127就用红显示这个点,(M,N)为0,就用白来显示,(M,N)为127就用蓝显示这个点。
如何用vc实现这个功能啊?多谢高人前来指点迷津!
假设地震数据有M道,每一道有N个采样点。采样点的大小(振幅)处在-127.5—127.5之间。
定义从红-》白-》蓝的颜色数组,有256种颜色,每一种颜色都与相应的振幅对应。
用颜色将振幅表现出来。
比如(M,N)为-127就用红显示这个点,(M,N)为0,就用白来显示,(M,N)为127就用蓝显示这个点。
如何用vc实现这个功能啊?多谢高人前来指点迷津!
如果是前者,RGB就是一种常见的颜色类型,至于后者,估计没有人有标准的答案,这得你自己一个颜色一个眼色测试,自己感觉视觉效果好即可
至于怎么关联振幅,也就是什么振幅用什么颜色,也是一样,这个别人怎么可能给你一个规则让你进行对照呢?这得你自己试
定义颜色时我想 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吧! 那样不得几百次啊。不可能的。
有没有更好的办法啊?谢谢!
-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的绝对值不一样
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.