logplus/BaseFun/src/BaseColor.cpp

50 lines
1.4 KiB
C++
Raw Normal View History

2025-10-29 17:23:30 +08:00
#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;
}