50 lines
1.4 KiB
C++
50 lines
1.4 KiB
C++
|
|
#include "BaseColor.h"
|
|||
|
|
|
|||
|
|
//彩色方式
|
|||
|
|
|
|||
|
|
// 计算变密度显示时的颜色
|
|||
|
|
int GetVDLDefaultColor(QColor *crColor,int nColorNum,int iMode)
|
|||
|
|
{
|
|||
|
|
int i,r,g,b;
|
|||
|
|
float flWidth,flTemp,temp;
|
|||
|
|
|
|||
|
|
if ( nColorNum > 256 ) nColorNum = 256;
|
|||
|
|
flTemp = 255. / nColorNum;
|
|||
|
|
if ( iMode == MONO_MODE ) nColorNum = 2;
|
|||
|
|
|
|||
|
|
for (i=0; i<nColorNum; i++)
|
|||
|
|
{
|
|||
|
|
switch ( iMode )
|
|||
|
|
{
|
|||
|
|
case COLOR_MODE: // 彩色
|
|||
|
|
temp = 255. * (float)(nColorNum-i) / (float)nColorNum;
|
|||
|
|
g = temp;
|
|||
|
|
if ( i > nColorNum / 2 )
|
|||
|
|
temp = 255. * 2.*(float)(nColorNum-i) / (float)nColorNum;
|
|||
|
|
else
|
|||
|
|
temp = 255;
|
|||
|
|
r = temp;
|
|||
|
|
if ( i > nColorNum / 2 )
|
|||
|
|
temp = 255. * (float)(nColorNum-i) / (float)(nColorNum*2);
|
|||
|
|
else
|
|||
|
|
temp = 255. * 6.*((float)nColorNum/2.-i)*((float)nColorNum/2-i)*((float)nColorNum/2-i)
|
|||
|
|
/ (float)(nColorNum*nColorNum*nColorNum);
|
|||
|
|
b = temp;
|
|||
|
|
break;
|
|||
|
|
case GRAY_MODE: // 灰度
|
|||
|
|
flWidth = (nColorNum-i) * flTemp;
|
|||
|
|
r = (int)flWidth ;
|
|||
|
|
g = (int)(flWidth );
|
|||
|
|
b = (int)(flWidth );
|
|||
|
|
break;
|
|||
|
|
case MONO_MODE: // 二值
|
|||
|
|
if (i== 0) r = g = b = 255;
|
|||
|
|
else r = g = b =0;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
crColor[i] = qRgb(r,g,b);
|
|||
|
|
}
|
|||
|
|
return nColorNum;
|
|||
|
|
}
|
|||
|
|
|