@ -37,13 +37,14 @@ extern double g_SDepthFac;
extern double g_EDepthFac ;
extern QString g_SelectMFac ;
QMyCustomPlot : : QMyCustomPlot ( QWidget * parent , QString strSlfName , QString strWellName , QString strTrackName , QString strLineName ) :
QMyCustomPlot : : QMyCustomPlot ( QWidget * parent , QString strSlfName , QString strWellName , QString strTrackName , QString strLineName , QString strType ) :
QCustomPlot ( parent )
{
m_strSlfName = strSlfName ;
m_strWellName = strWellName ;
m_strTrackName = strTrackName ;
m_strLineName = strLineName ;
m_strType = strType ;
// 创建一个新的顶层图层(如果还没有)
if ( ! this - > layer ( " topLayer " ) ) {
@ -131,7 +132,7 @@ QMyCustomPlot::QMyCustomPlot(QWidget *parent, QString strSlfName, QString strWel
//自定义滚动条
connect ( CallManage : : getInstance ( ) , SIGNAL ( sig_vertScrollBarChanged ( QString , double , double , double ) ) , this , SLOT ( vertScrollBarChanged ( QString , double , double , double ) ) ) ;
connect ( CallManage : : getInstance ( ) , SIGNAL ( sig_vertScrollBarChanged_setGeometry ( QString , double , double , double )) , this , SLOT ( vertScrollBarChanged_setGeometry ( QString , double , double , double ) ) ) ;
connect ( CallManage : : getInstance ( ) , SIGNAL ( sig_vertScrollBarChanged_setGeometry ( QString , double , double , double , int )) , this , SLOT ( vertScrollBarChanged_setGeometry ( QString , double , double , double , int ) ) ) ;
//曲线选中,置顶
connect ( CallManage : : getInstance ( ) , SIGNAL ( sig_Raise ( QString , QString , QString , QString , QString , int , QString ) ) , this , SLOT ( s_Raise ( QString , QString , QString , QString , QString , int , QString ) ) ) ;
@ -635,147 +636,7 @@ void QMyCustomPlot::initCurve(QString strSlfName, QString strLineName)
void QMyCustomPlot : : initImage ( QString strSlfName , QString strWaveName )
{
if ( strSlfName . isEmpty ( ) ) return ;
if ( strWaveName = = " " | | strWaveName = = " AC " ) strWaveName = " DYNIMAGE " ;
CLogIO * logio = new CLogIO ( ) ;
logio - > Open ( strSlfName . toStdString ( ) . c_str ( ) , CSlfIO : : modeRead ) ;
//
int index = logio - > OpenWave ( strWaveName . toStdString ( ) . c_str ( ) ) ;
if ( index < 0 ) {
delete logio ;
return ;
}
m_nUseColor = 1 ;
QMyCustomPlot * widget = this ;
Slf_WAVE _wave ;
logio - > GetWaveInfo ( index , & _wave ) ;
float _SDep , _EDep , _Rlev ;
_SDep = _wave . StartDepth ;
_EDep = _wave . EndDepth ;
m_SDep = _SDep ;
m_EDep = _EDep ;
// _SDep = 0.0 - m_iY2;
// _EDep = 0.0 - m_iY1;
_Rlev = _wave . DepLevel ;
int m_Record = ( float ) ( fabs ( ( _EDep - _SDep ) / _Rlev + 0.5 ) ) ;
int _nSamples = _wave . TimeSamples ;
m_nSamples = _nSamples ;
if ( m_fScaleV < = 0.0f )
m_fScaleV = _nSamples ;
char * value = new char [ ( _nSamples + 1 ) * m_Record * _wave . CodeLen + 1 ] ;
logio - > ReadWave ( index , _SDep , m_Record , ( void * ) value ) ;
logio - > CloseWave ( index ) ;
delete logio ;
bool bFistValue = false ;
float vmax = - 9999 ; //(float)_nSamples;
float vmin = - 9999 ;
float detp = _SDep ;
float edepc = _EDep ;
if ( m_nWaveJg < 10 )
m_nWaveJg = 10 ;
float m_r = _Rlev * m_nWaveJg ;
float m_MoveDep = 0.0f ;
float yscale = 1 ;
if ( m_nWaveHei > 1 )
{
float DifBase = 1 ;
if ( m_nDrawType = = 2 | | m_nDrawType = = 6 | | m_nDrawType = = 10 ) {
DifBase = ( m_MaxRange - m_Base ) / m_nColorNum ;
}
else {
DifBase = ( m_MaxRange - m_Base ) / 1 ;
}
if ( fabs ( DifBase ) < = 1e-6 ) DifBase = 1 ;
yscale = m_nWaveHei + DifBase ;
yscale = yscale / DifBase ;
}
//QVector< QVector <double>> vecWave;
m_vecWaveData . clear ( ) ;
for ( float dep1 = detp - 10 * m_r ; dep1 < edepc + m_MoveDep + 10 * m_r ; dep1 + = m_r )
{
int iIndex = Slf_Int ( dep1 + m_MoveDep , _SDep , _Rlev ) ;
if ( iIndex < 0 ) {
continue ;
}
if ( iIndex > = m_Record )
break ;
QVector < double > ve ( _nSamples ) ;
for ( int kk = 0 ; kk < _nSamples ; kk + + )
{
double val = GetData ( _wave . RepCode , ( char * ) & value [ iIndex * _nSamples * _wave . CodeLen + kk * _wave . CodeLen ] ) ;
ve [ kk ] = val ; // 256 * (val - m_LeftVal) / (m_RightVal - m_LeftVal);
//ve[kk] = (int)((val - m_Base)*yscale);
if ( val = = - 9999 )
{
continue ;
}
if ( bFistValue = = false )
{
//最大值,最小值默认采用第一个有效值
bFistValue = true ;
vmax = vmin = val ;
}
//
if ( vmax < val ) vmax = val ;
if ( vmin > val ) vmin = val ;
}
m_vecWaveData < < ve ;
}
delete [ ] value ;
widget - > m_fmin = vmin ;
widget - > m_fmax = vmax ;
//
if ( ! widget - > m_bX2Y )
{
widget - > setScaleX ( 0 , 264 ) ;
widget - > xAxis - > setVisible ( false ) ;
widget - > xAxis2 - > setVisible ( false ) ;
widget - > yAxis - > setVisible ( false ) ;
widget - > yAxis2 - > setVisible ( false ) ;
//对调XY轴, 在最前面设置
QCPAxis * yAxis = widget - > yAxis ;
QCPAxis * xAxis = widget - > xAxis ;
widget - > xAxis = yAxis ;
widget - > yAxis = xAxis ;
widget - > m_bX2Y = true ;
}
//-------------------
// set up the QCPColorMap:
if ( widget - > m_colorMap = = NULL )
{
QCPColorMap * colorMap = new QCPColorMap ( widget - > xAxis , widget - > yAxis ) ;
widget - > m_colorMap = colorMap ;
// 添加色标:
QCPColorScale * colorScale = new QCPColorScale ( widget ) ;
colorMap - > setColorScale ( colorScale ) ; // 将颜色图与色标关联
// : 现在, 我们通过访问颜色贴图的QCPColorMapData实例来分配一些数据:
this - > updateImageWave ( ) ;
// 重新缩放数据维度(颜色),以使所有数据点都位于颜色渐变显示的范围内:
//colorMap->rescaleDataRange();
this - > setSchemeIndex ( m_nSchemeIndex , m_nColorNum ) ;
}
else
{
this - > updateImageWave ( ) ;
}
updateImage ( m_iY2 ) ;
}
void QMyCustomPlot : : initColorTable ( )
@ -856,45 +717,418 @@ QCPColorMap * QMyCustomPlot::updateWave()
return m_colorMap ;
}
QCPColorMap * QMyCustomPlot : : updateImage Wave ( )
void QMyCustomPlot : : updateImage ( float fTopY )
{
int nx = m_vecWaveData . size ( ) ;
int ny = m_nSamples ;
m_colorMap - > data ( ) - > setSize ( nx , ny ) ; // 我们希望彩色地图有nx*ny的数据点
float f = 0.99 ; // 264 / 269.0f;
m_colorMap - > data ( ) - > setRange ( QCPRange ( 0 - m_EDep , 0 - m_SDep ) , QCPRange ( this - > m_iX1 , this - > m_iX2 * f ) ) ;
int nbs = 1024 ;
float fLeftVal = 0 ;
float fRightVal = 128 ;
FormInfo * pInfo = m_formTrack - > getFormInfoByParameters ( m_strUuid , m_strWellName , m_strTrackName , m_strLineName ) ;
bool bShow3D = false ;
if ( pInfo )
{
fLeftVal = pInfo - > m_ImgMinVal ;
fRightVal = pInfo - > m_ImgMaxVal ;
bShow3D = pInfo - > m_bShow3D ;
}
if ( bShow3D )
{
updateImage3D ( fTopY , pInfo ) ;
}
else
{
updateImage ( fTopY , pInfo ) ;
}
}
void QMyCustomPlot : : updateImage ( float fTopY , FormInfo * pInfo )
{
CLogIO * logio = new CLogIO ( ) ;
logio - > Open ( m_strSlfName . toStdString ( ) . c_str ( ) , CSlfIO : : modeRead ) ;
//
int iIndex = logio - > OpenWave ( m_strLineName . toStdString ( ) . c_str ( ) ) ;
if ( iIndex < 0 ) {
delete logio ;
return ;
}
for ( int xIndex = 0 ; xIndex < nx ; + + xIndex )
m_nUseColor = 1 ;
Slf_WAVE _wave ;
logio - > GetWaveInfo ( iIndex , & _wave ) ;
m_SDep = _wave . StartDepth ;
m_EDep = _wave . EndDepth ;
m_Rlev = _wave . DepLevel ;
float sdep , edep , flDepthScale = 18.897617f , temp ;
float sdepc = abs ( fTopY ) ; // _wave.StartDepth;
sdep = sdepc ;
edep = sdep + 50 ;
if ( edep > m_EDep ) edep = m_EDep ;
if ( sdep < m_SDep ) sdep = m_SDep ;
if ( sdep > m_EDep ) return ;
if ( edep < m_SDep ) return ;
if ( edep > m_EDep ) edep = m_EDep ;
if ( edep < sdep ) edep = sdep ;
if ( edep > m_EDep ) edep = m_EDep ;
if ( sdep > m_EDep ) sdep = m_EDep ;
int incount = ( edep - sdep ) / m_Rlev ;
if ( incount = = 0 )
return ;
float flDep ;
int i , ii , j , nPoint = 0 , m ;
QRectF rt , wrt ;
float dep , ch ;
double ratio ;
CString cs ;
QString qs ;
int ytmp = - 1 ;
float y = 9999999.0 ;
//计算数据点数
temp = _wave . TimeSamples ;
if ( temp < 0 ) temp - = 0.5 ;
nPoint = abs ( temp ) ;
ratio = 1.0 ; // int((float)incount * 1000 / rt.height()) / 1000.0; //比例
char * value = new char [ incount * nPoint * _wave . CodeLen ] ;
//按块读数据
if ( iIndex > = 0 )
{
for ( int yIndex = 0 ; yIndex < ny ; + + yIndex )
{
double dz = m_vecWaveData [ xIndex ] [ yIndex ] ;
if ( dz = = - 9999 )
{
dz = m_fmin ;
}
dz = dz * nbs / ( fRightVal - fLeftVal ) ;
if ( dz > m_fmax )
{
dz = m_fmax ;
}
m_colorMap - > data ( ) - > setCell ( nx - xIndex - 1 , yIndex , dz ) ;
}
logio - > ReadWave ( iIndex , sdep , incount , ( void * ) value ) ;
}
m_colorMap - > setDataRange ( QCPRange ( m_fmin , m_fmax ) ) ;
return m_colorMap ;
else memset ( value , 0 , incount * nPoint * _wave . CodeLen ) ;
float depcount = ( float ) incount / ( edep - sdep ) ;
float depcount1 = 0 ;
QSize qsize ;
int rh = 1000 ; // rt.height();
int rw = this - > size ( ) . width ( ) ;
long nLnBytes = ( nPoint * 3 + 3 ) / 4 * 4 ;
unsigned char * pData = new unsigned char [ nLnBytes * ( int ) ( rh + 0.5 ) ] ;
memset ( pData , 255 , nLnBytes * ( int ) ( rh + 0.5 ) ) ;
int datatype = 0 ;
int m_LeftVal = 0 ;
int m_RightVal = 128 ;
float m_flBackVal = - 9999 ;
if ( pInfo )
{
datatype = pInfo - > m_nCoord ;
m_LeftVal = pInfo - > m_ImgMinVal ;
m_RightVal = pInfo - > m_ImgMaxVal ;
m_flBackVal = - 9999 ;
m_nSchemeIndex = pInfo - > m_nSchemeIndex ;
}
//获取颜色数组
QList < QRgb > rgbList = QtColorTableData : : getInstance ( ) - > GetRgb_UseTag ( 1 , m_nSchemeIndex , 256 ) ;
QRgb rgbbg = QtColorTableData : : getInstance ( ) - > getRgb_Bg ( m_nSchemeIndex ) ;
for ( double dep1 = sdep ; dep1 < edep ; dep1 + = ratio * m_Rlev )
{
y = ( dep1 - sdepc ) * flDepthScale ;
//y = ConvertY( eCoord_GEO,dep1,eCoord_GEONormal );
if ( y < 0 ) continue ;
if ( ytmp = = int ( y ) ) continue ;
else ytmp = y ;
wrt . setTop ( y ) ;
depcount1 = ( dep1 - sdep ) * depcount ;
for ( i = 0 ; i < nPoint ; i + + )
{
ch = GetData ( _wave . RepCode , ( char * ) & value [ ( int ( depcount1 ) * nPoint + i ) * _wave . CodeLen ] ) ;
if ( wrt . top ( ) > = rh )
break ;
m = ( int ) wrt . top ( ) ;
if ( m_flBackVal ! = ch )
{
if ( datatype = = 0 ) //线性刻度
{
ii = 256 * ( ch - m_LeftVal ) / ( m_RightVal - m_LeftVal ) ;
}
else
{
if ( m_LeftVal < 1.0 )
ii = 256 * ( log10 ( ch ) ) / log10 ( m_RightVal ) ;
else
ii = 256 * ( log10 ( ch ) - log10 ( m_LeftVal ) ) / ( log10 ( m_RightVal ) - log10 ( m_LeftVal ) ) ;
}
if ( ii > 254 ) ii = 254 ;
if ( ii < 0 ) ii = 0 ;
pData [ m * nLnBytes + 3 * i ] = qRed ( rgbList . at ( ii ) ) ;
pData [ m * nLnBytes + 3 * i + 1 ] = qGreen ( rgbList . at ( ii ) ) ;
pData [ m * nLnBytes + 3 * i + 2 ] = qBlue ( rgbList . at ( ii ) ) ;
}
else
{
pData [ m * nLnBytes + 3 * i ] = qRed ( rgbbg ) ;
pData [ m * nLnBytes + 3 * i + 1 ] = qGreen ( rgbbg ) ;
pData [ m * nLnBytes + 3 * i + 2 ] = qBlue ( rgbbg ) ;
}
}
} //read data end
int nheight = rh ;
if ( wrt . top ( ) < rh - 1 )
nheight = ( int ) ( wrt . top ( ) + 0.5 ) ; //若数据行数小于rt.Height()
//防止图片扭曲:同时限定每一行的数据大小可以保证
QImage membmp ( pData , nPoint , nheight , 3 * nPoint , QImage : : Format_RGB888 ) ;
qsize . setWidth ( rw - 2 ) ;
qsize . setHeight ( nheight ) ;
// 图像缩放
QImage result = membmp . scaled ( qsize , Qt : : IgnoreAspectRatio , Qt : : SmoothTransformation ) ;
//result.save("E:\\ALogplus\\doc\\1.png");
//pDC->drawImage(rt.left() + 1, mrt.top(), result);
if ( mPixmap_tx = = NULL )
{
mPixmap_tx = new QCPItemPixmap ( this ) ;
}
//mPixmap->setScaled(true, Qt::IgnoreAspectRatio); // 设置缩放方式
mPixmap_tx - > topLeft - > setCoords ( m_iX1 , - sdep ) ;
mPixmap_tx - > bottomRight - > setCoords ( m_iX2 , - edep ) ;
mPixmap_tx - > setPixmap ( QPixmap : : fromImage ( result ) ) ;
delete [ ] pData ; pData = NULL ;
delete [ ] value ;
this - > replot ( ) ;
}
void QMyCustomPlot : : updateImage3D ( float fTopY , FormInfo * pInfo )
{
CLogIO * logio = new CLogIO ( ) ;
logio - > Open ( m_strSlfName . toStdString ( ) . c_str ( ) , CSlfIO : : modeRead ) ;
//
int iIndex = logio - > OpenWave ( m_strLineName . toStdString ( ) . c_str ( ) ) ;
if ( iIndex < 0 ) {
delete logio ;
return ;
}
m_nUseColor = 1 ;
Slf_WAVE _wave ;
logio - > GetWaveInfo ( iIndex , & _wave ) ;
m_SDep = _wave . StartDepth ;
m_EDep = _wave . EndDepth ;
m_Rlev = _wave . DepLevel ;
float sdep , edep , flDepthScale = 18.897617f , temp ;
float sdepc = abs ( fTopY ) ; // _wave.StartDepth;
sdep = sdepc ;
edep = sdep + 50 ;
if ( sdep > m_EDep ) sdep = m_EDep ;
if ( edep < m_SDep ) edep = m_SDep ;
if ( sdep < m_SDep ) sdep = m_SDep ;
if ( edep > m_EDep ) edep = m_EDep ;
if ( edep < sdep ) edep = sdep ;
int iDepCount = ( edep - sdep ) / m_Rlev ;
if ( iDepCount = = 0 )
return ;
// 计算开始数据点及数据点数
int nPoint , m ;
float flVal ;
//计算数据点数
temp = _wave . TimeSamples ;
if ( temp < 0 ) temp - = 0.5 ;
nPoint = abs ( temp ) ;
// 绘制
QRectF wrt ;
int dep = 0 ;
float detp = sdepc ;
int rh = 1000 ; // rt.height();
int rw = this - > size ( ) . width ( ) ;
double ratio = 1 ; // int((float)iDepCount * 1000 / rt.height()) / 1000.0;
if ( ratio > 1 ) ratio = 1 ;
char * value = new char [ iDepCount * nPoint * _wave . CodeLen ] ;
long nLnBytes = ( nPoint * 3 + 3 ) / 4 * 4 ;
unsigned char * pData = new unsigned char [ nLnBytes * ( int ) ( rh + 0.5 ) ] ;
memset ( pData , 255 , nLnBytes * ( int ) ( rh + 0.5 ) ) ;
int m_iStartAngle = 20 ;
int m_iStartPos = 0 ;
int datatype = 0 ;
int m_LeftVal = 0 ;
int m_RightVal = 128 ;
if ( pInfo )
{
m_iStartAngle = pInfo - > m_nOverlook ;
m_iStartPos = pInfo - > m_nAzimuth ;
datatype = pInfo - > m_nCoord ;
m_LeftVal = pInfo - > m_ImgMinVal ;
m_RightVal = pInfo - > m_ImgMaxVal ;
m_nSchemeIndex = pInfo - > m_nSchemeIndex ;
}
QList < QRgb > rgbList = QtColorTableData : : getInstance ( ) - > GetRgb_UseTag ( 1 , m_nSchemeIndex , 256 ) ;
float pi = 3.1415926 ;
float angle = pi / ( ( float ) nPoint / 2.0 ) ;
int drawdep ;
float fangle = m_iStartAngle / 90.0 ;
int r = rw / 4 * fangle ;
int dis = nPoint / 4 ;
float flOffset = 0 ;
int drawFlag = - 1 ;
int drawHead = 0 ;
bool flag1 = ( ( sdep > detp ) | | ( sdep > detp ) ) ;
bool flag2 = ( ( m_SDep < sdep ) | | ( m_SDep > sdep ) ) ;
int ioffset = m_iStartPos * nPoint / 360.0 + 0.5 ;
int ytmp = - 1 ;
for ( double dep1 = sdep ; dep1 < edep ; dep1 + = ratio * m_Rlev )
{
float y = ( dep1 - sdepc ) * flDepthScale ;
if ( ytmp = = int ( y ) ) continue ;
else ytmp = y ;
wrt . setTop ( y ) ;
drawFlag + + ;
if ( ! drawFlag )
drawHead = wrt . top ( ) ;
if ( ! flag1 )
drawHead = r ;
if ( ! flag2 )
wrt . setTop ( wrt . top ( ) - r ) ;
if ( wrt . top ( ) = = r )
flOffset = dep1 - sdep ;
//画带头的圆柱
if ( ! flag1 | | ! flag2 )
{
if ( iIndex > = 0 )
{
logio - > ReadWave ( iIndex , dep1 + flOffset , 1 , ( void * ) value ) ;
}
else memset ( value , 0 , m_nSamples * _wave . DepLevel ) ;
for ( int i = 0 ; i < = nPoint / 2 ; i + + )
{
drawdep = wrt . top ( ) + r + r * sin ( angle * i ) ;
flVal = GetData ( _wave . RepCode , ( char * ) & value [ ( i + ioffset ) % nPoint * _wave . CodeLen ] ) ;
if ( drawdep > rh - 1 )
continue ;
else
{
// if (m_flBackVal == flVal)
// {
// pData[drawdep*nLnBytes + 3 * (i + dis)] = GetBValue(m_GraInfo.GetBackgroundColour());
// pData[drawdep*nLnBytes + 3 * (i + dis) + 1] = GetGValue(m_GraInfo.GetBackgroundColour());
// pData[drawdep*nLnBytes + 3 * (i + dis) + 2] = GetRValue(m_GraInfo.GetBackgroundColour());
// }
// else
{
int ii ;
if ( datatype = = 0 ) //线性刻度
{
ii = 256 * ( flVal - m_LeftVal ) / ( m_RightVal - m_LeftVal ) ;
}
else
{
if ( m_LeftVal < 1.0 )
ii = 256 * ( log10 ( flVal ) ) / log10 ( m_RightVal ) ;
else
ii = 256 * ( log10 ( flVal ) - log10 ( m_LeftVal ) ) / ( log10 ( m_RightVal ) - log10 ( m_LeftVal ) ) ;
}
if ( ii > 254 ) ii = 254 ;
if ( ii < 0 ) ii = 0 ;
pData [ drawdep * nLnBytes + 3 * ( i + dis ) ] = qRed ( rgbList . at ( ii ) ) ; // GetBValue(pColorArr[ii]);
pData [ drawdep * nLnBytes + 3 * ( i + dis ) + 1 ] = qGreen ( rgbList . at ( ii ) ) ; // GetGValue(pColorArr[ii]);
pData [ drawdep * nLnBytes + 3 * ( i + dis ) + 2 ] = qBlue ( rgbList . at ( ii ) ) ; // GetRValue(pColorArr[ii]);
}
}
}
}
/* else //不带头
{
if ( iIndex > = 0 )
{
mrw . ReadWave ( iIndex , dep1 - flOffset , 1 , ( void * ) value ) ;
}
else memset ( value , 0 , m_nSamples * WaveInfo . DepLevel ) ;
for ( i = 0 ; i < = nPoint / 2 ; i + + )
{
drawdep = wrt . top ( ) - r + r * sin ( angle * i ) ;
if ( drawdep < 0 )
continue ;
else
{
flVal = GetData ( WaveInfo . RepCode , ( char * ) & value [ ( i + ioffset ) % nPoint * WaveInfo . CodeLen ] ) ;
if ( m_flBackVal = = flVal )
{
pData [ drawdep * nLnBytes + 3 * ( i + dis ) ] = GetBValue ( m_GraInfo . GetBackgroundColour ( ) ) ;
pData [ drawdep * nLnBytes + 3 * ( i + dis ) + 1 ] = GetGValue ( m_GraInfo . GetBackgroundColour ( ) ) ;
pData [ drawdep * nLnBytes + 3 * ( i + dis ) + 2 ] = GetRValue ( m_GraInfo . GetBackgroundColour ( ) ) ;
}
else
{
int ii ;
if ( datatype = = LINEAR ) //线性刻度
{
ii = 256 * ( flVal - m_LeftVal ) / ( m_RightVal - m_LeftVal ) ;
}
else
{
if ( m_LeftVal < 1.0 )
ii = 256 * ( log10 ( flVal ) ) / log10 ( m_RightVal ) ;
else
ii = 256 * ( log10 ( flVal ) - log10 ( m_LeftVal ) ) / ( log10 ( m_RightVal ) - log10 ( m_LeftVal ) ) ;
}
if ( ii > 255 ) ii = 255 ;
if ( ii < 0 ) ii = 0 ;
pData [ drawdep * nLnBytes + 3 * ( i + dis ) ] = GetBValue ( pColorArr [ ii ] ) ;
pData [ drawdep * nLnBytes + 3 * ( i + dis ) + 1 ] = GetGValue ( pColorArr [ ii ] ) ;
pData [ drawdep * nLnBytes + 3 * ( i + dis ) + 2 ] = GetRValue ( pColorArr [ ii ] ) ;
}
}
}
} */
}
int nheight = rh ;
if ( wrt . top ( ) < rh - 1 )
nheight = ( int ) ( wrt . top ( ) + 0.5 ) ;
long nLnBytes1 = ( nPoint * 3 + 3 ) / 4 * 4 ;
BYTE * pData1 = new BYTE [ nLnBytes1 * nheight ] ;
memcpy ( pData1 , pData , nLnBytes1 * nheight ) ;
QImage membmp ( pData1 , nPoint , nheight , 3 * nPoint , QImage : : Format_RGB888 ) ;
QSize qsize ;
qsize . setWidth ( rw - 2 ) ;
qsize . setHeight ( nheight ) ;
// 图像缩放
QImage result = membmp . scaled ( qsize , Qt : : IgnoreAspectRatio , Qt : : SmoothTransformation ) ;
if ( mPixmap_tx = = NULL )
{
mPixmap_tx = new QCPItemPixmap ( this ) ;
}
//mPixmap->setScaled(true, Qt::IgnoreAspectRatio); // 设置缩放方式
mPixmap_tx - > topLeft - > setCoords ( m_iX1 , - sdep ) ;
mPixmap_tx - > bottomRight - > setCoords ( m_iX2 , - edep ) ;
mPixmap_tx - > setPixmap ( QPixmap : : fromImage ( result ) ) ;
delete [ ] pData1 ;
delete [ ] pData ;
delete [ ] value ;
delete logio ;
this - > replot ( ) ;
}
float QMyCustomPlot : : getScaleV ( )
@ -5726,8 +5960,7 @@ void QMyCustomPlot::s_changeDrawProperty(QVariantList vlist)
m_MaxRange = varVal . toDouble ( ) ;
this - > changePropertyWaveUpdate ( ) ;
}
else if ( " 色板 " = = strProperty
| | " 配色方案 " = = strProperty )
else if ( " 色板 " = = strProperty )
{
this - > setSchemeIndex ( varVal . toInt ( ) , m_nColorNum ) ;
}
@ -5794,9 +6027,14 @@ void QMyCustomPlot::s_changeDrawProperty(QVariantList vlist)
this - > changeCurveValSetting ( ) ;
}
else if ( " 最小值 " = = strProperty
| | " 最大值 " = = strProperty )
| | " 最大值 " = = strProperty
| | " 三维显示 " = = strProperty
| | " 俯视角度 " = = strProperty
| | " 显示方位 " = = strProperty
| | " 坐标类型 " = = strProperty
| | " 配色方案 " = = strProperty )
{
this - > updateImageWave ( ) ;
this - > updateImage ( m_fTopY ) ;
}
this - > replot ( ) ;
@ -11095,6 +11333,7 @@ void QMyCustomPlot::setDepthY(float fy1, float fy2)
{
this - > m_iY1 = fy1 ;
this - > m_iY2 = fy2 ;
m_fTopY = fy2 ;
this - > yAxis - > setRange ( m_iY1 , m_iY2 ) ;
if ( m_bRowGridVisible )
@ -11105,6 +11344,7 @@ void QMyCustomPlot::updateDepthY(float fy1, float fy2)
{
this - > m_iY1 = fy1 ;
this - > m_iY2 = fy2 ;
m_fTopY = fy2 ;
//深度改变
if ( this - > m_bX2Y = = true )
{
@ -12527,7 +12767,7 @@ void QMyCustomPlot::addQCPItemLine(QMyCustomPlot *widget, float cx, float cy, co
pLine - > setPoints ( myPolygon ) ;
}
void QMyCustomPlot : : vertScrollBarChanged_setGeometry ( QString strUuid , double value , double low , double upper )
void QMyCustomPlot : : vertScrollBarChanged_setGeometry ( QString strUuid , double value , double low , double upper , int ndepth )
{
if ( m_strUuid = = strUuid )
{
@ -12544,6 +12784,12 @@ void QMyCustomPlot::vertScrollBarChanged_setGeometry(QString strUuid, double val
//move(0, -(dPercent*geoRect.height()));
setGeometry ( 0 , - ( dPercent * geoRect . height ( ) ) , geoRect . width ( ) , geoRect . height ( ) ) ;
if ( " DrawImageObject " = = m_strType )
{
m_fTopY = ndepth ;
updateImage ( ndepth ) ;
}
return ;
}