Conflicts:
	logPlus/formdraw.cpp
This commit is contained in:
zhaolei 2026-05-12 10:57:38 +08:00
commit be6be4c430
6 changed files with 448 additions and 184 deletions

View File

@ -180,7 +180,7 @@ signals:
void sig_changeScale(QString strUuid, int iNewScale);
//自定义滚动条
void sig_vertScrollBarChanged_setGeometry(QString strUuid, double iNewValue, double low, double upper);
void sig_vertScrollBarChanged_setGeometry(QString strUuid, double iNewValue, double low, double upper, int ndepth);
//自定义滚动条
void sig_vertScrollBarChanged(QString strUuid, double iNewValue, double low, double upper);
//自定义滚动条(三图一表)

View File

@ -266,7 +266,7 @@ void MainWindowCurve::vertScrollBarChanged(int value)
{
double iCurValue = dDelta - (iNumShow-1)*dScrollHeight;
//通知界面重设范围
emit CallManage::getInstance()->sig_vertScrollBarChanged_setGeometry(m_strUuid, iCurValue, dScrollHeight_setGeometry, 0);
emit CallManage::getInstance()->sig_vertScrollBarChanged_setGeometry(m_strUuid, iCurValue, dScrollHeight_setGeometry, 0, value);
}
else if(iNumShow>0)
{

View File

@ -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::updateImageWave()
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;
}

View File

@ -71,6 +71,7 @@ typedef struct FRACTABLE
float X[16],Y[16];//X0,Y0,X1,Y1,X2,Y2,X3,Y3,X4,Y4,X5,Y5,X6,Y6,X7,Y7,X8,Y8,X9,Y9;
}FRAC_TABLE;
class FormInfo;
class FormTrack;
class FormDraw;
class TransparentGroupResult;
@ -78,7 +79,7 @@ class QMyCustomPlot : public QCustomPlot
{
Q_OBJECT
public:
QMyCustomPlot(QWidget *parent = nullptr, QString strSlfName="", QString strWellName="", QString strTrackName="", QString strLineName="");
QMyCustomPlot(QWidget *parent = nullptr, QString strSlfName="", QString strWellName="", QString strTrackName="", QString strLineName="", QString strType = "");
virtual ~QMyCustomPlot()
{
@ -100,7 +101,10 @@ public:
void setSchemeIndex(int nidx, int colorNum);
QCPColorMap * updateWave();
QCPColorMap * updateImageWave();
void updateImage(float fTopY);
void updateImage(float fTopY, FormInfo* pInfo);
void updateImage3D(float fTopY, FormInfo* pInfo);
float getScaleV();
@ -167,12 +171,14 @@ public:
QString m_strWellName;
QString m_strTrackName;
QString m_strLineName;
QString m_strType = "";
FormTrack *m_formTrack = NULL;
FormDraw *m_formDraw = NULL;
//
float m_iX1, m_iX2;
float m_iY1, m_iY2;
float m_fTopY = 0; // 显示深度upper
qint8 m_nLeftCross = 0; // 左跨道个数
qint8 m_nRightCross = 0; // 右跨道个数
@ -408,6 +414,8 @@ public:
//检查套管组件名称,是否需要更新套管图形
bool checkTubingName(QString m_Result);
QCPItemPixmap *mPixmap_tx = nullptr; //图像
signals:
//信号槽刷新
void sig_replot();
@ -415,7 +423,7 @@ public slots:
void slot_time();
//自定义滚动条
void vertScrollBarChanged(QString strUuid, double value, double low, double upper);
void vertScrollBarChanged_setGeometry(QString strUuid, double value, double low, double upper);
void vertScrollBarChanged_setGeometry(QString strUuid, double value, double low, double upper, int ndepth);
//信号槽刷新
void slot_replot();

View File

@ -478,6 +478,7 @@ bool QtColorTableData::LoadColorConfig()
{
colorList.push_back(QtColorItem(QColor(pColorArr[k])));
}
m_colorBg.push_back(QtColorItem(QColor(m_GraInfo.GetBackgroundColour())));
QString str = qvFiles.at(i);
QStringList slist = str.split("_");
@ -566,6 +567,12 @@ QList<QRgb> QtColorTableData::GetRgb_UseTag(int nuse, int schemIndex, int colorn
return rgbList;
}
QRgb QtColorTableData::getRgb_Bg(int schemIndex) const
{
const QtColorItem& item = m_colorBg[schemIndex];
return qRgb(item.color.red(),item.color.green(),item.color.blue());
}
void QtColorTableData::ChangeDataRange(QtSchemeColor *scheme)
{
int colorNum=scheme->colorList.count();

View File

@ -179,6 +179,8 @@ public:
QList<QRgb> GetRgb_UseTag(int nuse, int schemIndex, int colornum=0) const;
QRgb getRgb_Bg(int schemIndex) const;
void ChangeDataRange(QtSchemeColor *scheme);
void ReadSettings();
@ -206,6 +208,7 @@ private:
// 当前所有的颜色方案,包括系统方案,自定义方案
QList<QtSchemeColor> m_colorSchemeList;
QList<QtSchemeColor> m_colorCfgList;
QList<QtColorItem> m_colorBg;
// 备份的颜色方案
QList<QtSchemeColor> m_systemSchemeList;