成像到绘制,使用QPainer实现。
This commit is contained in:
parent
a1d59208b0
commit
ac7106e59f
|
|
@ -12,6 +12,7 @@
|
|||
#include "formline.h"
|
||||
#include "formlogmud.h"
|
||||
#include "formwave.h"
|
||||
#include "formimage.h"
|
||||
#include "PropertyWidget.h"
|
||||
#include "DrawTvd.h"
|
||||
#include "DepthProgress.h"
|
||||
|
|
@ -164,6 +165,14 @@ void FormDraw::setDrawData(QStringList listdt, QJsonObject objInfo)
|
|||
pwave->m_formTrack = m_formTrack;
|
||||
pwave->show();
|
||||
}
|
||||
else if ("DrawImageObject" == strType)
|
||||
{
|
||||
FormImage *pimg = new FormImage(this, strSlfName, strWellName, m_strTrackName, strLineName);
|
||||
pimg->setDepthY(m_iY1, m_iY2);
|
||||
pimg->initGeometry(m_strUuid, m_iScale, dW, m_nObjDrawH);
|
||||
pimg->m_formTrack = m_formTrack;
|
||||
pimg->show();
|
||||
}
|
||||
else
|
||||
{
|
||||
//
|
||||
|
|
@ -4278,38 +4287,36 @@ void FormDraw::s_addDrawImage(QString strUuid, QString strSlfName, QString strWe
|
|||
return;
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
QMyCustomPlot *curv = new QMyCustomPlot(this, strSlfName, strWellName, strTrackName, strLineName, "DrawImageObject");
|
||||
//绑定m_formTrack,方便关联formInfo
|
||||
curv->m_formTrack = m_formTrack;
|
||||
curv->setDepthY(m_iY1, m_iY2);
|
||||
curv->setScaleX(0, 264);
|
||||
if (nW <= 0)
|
||||
nW = g_iOneWidth;
|
||||
curv->initGeometry(m_strUuid, m_iScale, nW);
|
||||
curv->m_bX2Y = false;
|
||||
curv->show();
|
||||
|
||||
//图像 成像
|
||||
QString strWaveName = "";
|
||||
int _nSamples = 0;
|
||||
curv->initImage(strSlfName, strWaveName);
|
||||
//curv->initImage3D(strSlfName, strWaveName);
|
||||
|
||||
//DrawImageNew_NoFilter(curv, strSlfName, strWaveName, _nSamples);
|
||||
|
||||
//curv->m_colorMap->setVisible(false);
|
||||
//CylindricalImageMap* cylinderMap = new CylindricalImageMap(curv->xAxis, curv->yAxis);
|
||||
//cylinderMap->setData(curv->m_colorMap->data());
|
||||
//cylinderMap->setCylinderRadius(2.0);
|
||||
//cylinderMap->setSourceColorMap(curv->m_colorMap); // 共享梯度
|
||||
//cylinderMap->setAzimuth(45);
|
||||
//cylinderMap->setElevation(30);
|
||||
|
||||
//
|
||||
connect(curv, SIGNAL(mouseWheel(QWheelEvent*)), this, SLOT(s_mouseWheel(QWheelEvent*)));
|
||||
bool bDraw = true;
|
||||
if (bDraw)
|
||||
{
|
||||
FormImage *pImg = new FormImage(this, strSlfName, strWellName, strTrackName, strLineName);
|
||||
pImg->setDepthY(m_iY1, m_iY2);
|
||||
pImg->initGeometry(m_strUuid, m_iScale, nW, m_nObjDrawH);
|
||||
pImg->m_formTrack = m_formTrack;
|
||||
pImg->show();
|
||||
_nSamples = 264;
|
||||
}
|
||||
else
|
||||
{
|
||||
QMyCustomPlot *curv = new QMyCustomPlot(this, strSlfName, strWellName, strTrackName, strLineName, "DrawImageObject");
|
||||
//绑定m_formTrack,方便关联formInfo
|
||||
curv->m_formTrack = m_formTrack;
|
||||
curv->setDepthY(m_iY1, m_iY2);
|
||||
curv->setScaleX(0, 264);
|
||||
curv->initGeometry(m_strUuid, m_iScale, nW);
|
||||
curv->m_bX2Y = false;
|
||||
curv->show();
|
||||
|
||||
//图像 成像
|
||||
QString strWaveName = "";
|
||||
curv->initImage(strSlfName, strWaveName);
|
||||
connect(curv, SIGNAL(mouseWheel(QWheelEvent*)), this, SLOT(s_mouseWheel(QWheelEvent*)));
|
||||
}
|
||||
//
|
||||
m_listLineName.push_back(strLineName);
|
||||
|
||||
|
|
|
|||
881
logPlus/formimage.cpp
Normal file
881
logPlus/formimage.cpp
Normal file
|
|
@ -0,0 +1,881 @@
|
|||
#include "FormImage.h"
|
||||
#include "ui_FormImage.h"
|
||||
#include <QPainter>
|
||||
#include "CallManage.h"
|
||||
#include "forminfo.h"
|
||||
#include "formtrack.h"
|
||||
#include "geometryutils.h"
|
||||
#include "qtColorSchemeComboBox.h"
|
||||
|
||||
extern double g_dPixelPerCm;//每厘米像素数
|
||||
|
||||
FormImage::FormImage(QWidget *parent, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName) :
|
||||
QWidget(parent),
|
||||
ui(new Ui::FormImage)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
m_strSlfName = strSlfName;
|
||||
m_strWellName = strWellName;
|
||||
m_strTrackName = strTrackName;
|
||||
m_strLineName = strLineName;
|
||||
|
||||
//LoadFromSLF_wave();
|
||||
|
||||
|
||||
m_parent = parent;
|
||||
//斜井三图一表
|
||||
// connect(CallManage::getInstance(), SIGNAL(sig_ChangeTvdProperty(QString, QString, QString, QString, QString, QString, QString, QVariant)),
|
||||
// this, SLOT(s_ChangeTvdProperty(QString, QString, QString, QString, QString, QString, QString, QVariant)));
|
||||
//自定义滚动条
|
||||
//connect(CallManage::getInstance(), SIGNAL(sig_vertScrollBarChanged_santuyibiao(QString, double, double, double)), this, SLOT(vertScrollBarChanged(QString, double, double, double)));
|
||||
//打印
|
||||
//connect(CallManage::getInstance(), SIGNAL(sig_vertScrollBarChanged_santu_Print(QString, int, int)), this, SLOT(vertScrollBarChanged_Print(QString, int, int)));
|
||||
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, int)), this, SLOT(vertScrollBarChanged_setGeometry(QString, double, double, double, int)));
|
||||
connect(CallManage::getInstance(), SIGNAL(sig_ResizeDepth(QString, int, float)), this, SLOT(s_ResizeDepth(QString, int, float)));
|
||||
//黑白图
|
||||
connect(CallManage::getInstance(), SIGNAL(sig_changeBlack(QString, bool)), this, SLOT(s_changeBlack(QString, bool)));
|
||||
}
|
||||
|
||||
FormImage::~FormImage()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void FormImage::initGeometry(QString strUuid, int nscale, double fW, int nH)
|
||||
{
|
||||
if (strUuid.length() > 0)
|
||||
this->m_strUuid = strUuid;
|
||||
m_iScale = nscale;
|
||||
|
||||
int ntmpw = fW * g_dPixelPerCm;
|
||||
this->setGeometry(0, 0, ntmpw - 2, (int)nH);
|
||||
|
||||
//修改滚动条,针对新建的
|
||||
emit CallManage::getInstance()->sig_changeScrollBar(m_strUuid);
|
||||
}
|
||||
|
||||
void FormImage::setDepthY(float fy1, float fy2)
|
||||
{
|
||||
this->m_iY1 = fy1;
|
||||
this->m_iY2 = fy2;
|
||||
|
||||
m_PlotSdep = qAbs(this->m_iY2);
|
||||
m_fTopY = m_PlotSdep;
|
||||
}
|
||||
|
||||
void FormImage::updateDepthY(float fy1, float fy2)
|
||||
{
|
||||
this->m_iY1 = fy1;
|
||||
this->m_iY2 = fy2;
|
||||
m_fTopY = qAbs(this->m_iY2);
|
||||
update();
|
||||
}
|
||||
|
||||
bool FormImage::LoadFromSLF_wave()
|
||||
{
|
||||
CLogIO * logio = new CLogIO();
|
||||
if (!logio->Open(m_strSlfName.toStdString().c_str(), CSlfIO::modeRead))
|
||||
{
|
||||
delete logio;
|
||||
m_vMD.SetSize(0);
|
||||
m_vMD.m_vProperty = 0;
|
||||
m_vProperty.SetSize(0);
|
||||
m_vProperty.m_vProperty = NULL;
|
||||
return false;
|
||||
}
|
||||
int curveindex = logio->OpenWave(m_strLineName.toStdString().c_str());
|
||||
if (curveindex < 0)
|
||||
{
|
||||
m_vMD.SetSize(0);
|
||||
m_vMD.m_vProperty = 0;
|
||||
m_vProperty.SetSize(0);
|
||||
m_vProperty.m_vProperty = NULL;
|
||||
delete logio;
|
||||
return false;
|
||||
}
|
||||
//m_ObjectType = WAVE_OBJECT;
|
||||
logio->GetWaveInfo(curveindex, &waveinfo);
|
||||
// if (m_ArrayNum > 1) {
|
||||
// if (waveinfo.RepCode == REPR_CHAR) waveinfo.RepCode = REPR_UCHAR;
|
||||
// }
|
||||
// acurveinfo.RepCode = waveinfo.RepCode;
|
||||
// acurveinfo.CodeLen = waveinfo.CodeLen;
|
||||
// acurveinfo.DepLevel = waveinfo.DepLevel;
|
||||
// acurveinfo.StartDepth = waveinfo.StartDepth;
|
||||
// acurveinfo.EndDepth = waveinfo.EndDepth;
|
||||
// isRun = true;
|
||||
|
||||
int samplenum = (waveinfo.EndDepth - waveinfo.StartDepth) / waveinfo.DepLevel + 1.5;
|
||||
QString name = m_strSlfName + m_strLineName;
|
||||
// if (m_ArrayNum > 1) {
|
||||
// name += "Array";
|
||||
// }
|
||||
// key = name;
|
||||
int nbpp = waveinfo.SamplePoint;
|
||||
int mlen = 0;
|
||||
int myWidth = 0;
|
||||
int chlen = 0;
|
||||
int nPadZ = 0;
|
||||
int myWidth1 = waveinfo.SamplePoint;
|
||||
int shift0 = 0;
|
||||
// if (m_ArrayNum > 1) {
|
||||
// shift0 = pMsa->shift0;
|
||||
// nPadZ = pMsa->nPadZ;
|
||||
// myWidth = pMsa->Width;
|
||||
// nbpp = pMsa->nSample;
|
||||
// m_ArrayNum = pMsa->nPad;
|
||||
// mlen = myWidth - m_ArrayNum * nbpp;//总盲区宽度
|
||||
// mlen /= m_ArrayNum;
|
||||
// if (mlen % 2 != 0) mlen += 1;
|
||||
// if (nPadZ < 4) chlen = mlen / 8;
|
||||
// else chlen = mlen / 4;
|
||||
// if (chlen % 2 != 0) chlen += 1;
|
||||
// if (chlen == 0) chlen = 2;
|
||||
// // mlen=mlen-chlen;
|
||||
// mlen = m_ArrayNum * chlen / nPadZ;
|
||||
// if (mlen % 2 != 0) mlen++;
|
||||
// if (mlen > 20) mlen = 20;
|
||||
// if (chlen < 4) chlen = 4;
|
||||
// // chlen=(myWidth-(mlen*m_ArrayNum+nbpp*m_ArrayNum))/nPadZ;
|
||||
// int klen = pMsa->nPadZ*waveinfo.SamplePoint + mlen + pMsa->nPadZ*chlen;
|
||||
// myWidth1 = klen * pMsa->nPad / pMsa->nPadZ;
|
||||
// }
|
||||
// else
|
||||
myWidth = waveinfo.SamplePoint;
|
||||
int nlen = waveinfo.CodeLen*waveinfo.SamplePoint;
|
||||
int reclen = waveinfo.CodeLen*myWidth*waveinfo.ArrayNum;
|
||||
|
||||
m_SDep = waveinfo.StartDepth;
|
||||
m_EDep = waveinfo.EndDepth;
|
||||
m_Rlev = waveinfo.DepLevel;
|
||||
m_nSamples = waveinfo.SamplePoint*waveinfo.ArrayNum;
|
||||
m_PointNum = (float)(fabs((m_EDep - m_SDep) / m_Rlev + 0.5));
|
||||
|
||||
m_sharedMemory.setKey(name);
|
||||
// 3. 创建或附加到共享内存
|
||||
if (m_sharedMemory.isAttached())
|
||||
{
|
||||
m_sharedMemory.detach();
|
||||
}
|
||||
|
||||
int nMemnum = 3 * sizeof(float) + sizeof(int) + reclen * (samplenum + 1);
|
||||
|
||||
if (!m_sharedMemory.attach())
|
||||
{
|
||||
// 尝试创建共享内存
|
||||
if (!m_sharedMemory.create(nMemnum))
|
||||
{
|
||||
qDebug() << "Failed to create shared memory:"
|
||||
<< m_sharedMemory.errorString();
|
||||
return false;
|
||||
}
|
||||
|
||||
float *buffer = (float*)m_sharedMemory.data();
|
||||
buffer[0] = waveinfo.StartDepth;
|
||||
buffer[1] = waveinfo.EndDepth;
|
||||
buffer[2] = waveinfo.DepLevel;
|
||||
((int *)buffer)[3] = samplenum;
|
||||
char *pchar = (char *)&buffer[4];
|
||||
//double laa = (double)reclen*(double)samplenum / waveinfo.CodeLen;
|
||||
int num = reclen * samplenum / waveinfo.CodeLen;
|
||||
float defval = -9999;
|
||||
if (waveinfo.RepCode == REPR_CHAR || waveinfo.RepCode == REPR_UCHAR) defval = 0;
|
||||
else if (waveinfo.RepCode == REPR_SHORT || waveinfo.RepCode == REPR_USHORT) defval = 0xffff;
|
||||
|
||||
for (int i = 0; i < num; i++)
|
||||
{
|
||||
this->SetData(waveinfo.RepCode, &pchar[i*waveinfo.CodeLen], defval);
|
||||
}
|
||||
|
||||
logio->ReadWave(curveindex, waveinfo.StartDepth, samplenum, (void *)pchar);
|
||||
}
|
||||
|
||||
// 4. 锁定共享内存并写入数据
|
||||
if (!m_sharedMemory.lock())
|
||||
{
|
||||
qDebug() << "Failed to lock shared memory";
|
||||
m_sharedMemory.detach();
|
||||
return false;
|
||||
}
|
||||
|
||||
m_vMD.SetSize(3);
|
||||
m_vMD.m_vProperty = (float *)m_sharedMemory.data();
|
||||
int size = ((int *)m_sharedMemory.data())[3];
|
||||
m_vProperty.SetSize(size);
|
||||
m_vProperty.m_vProperty = &m_vMD.m_vProperty[4];
|
||||
|
||||
if (m_vMD.size() > 0) {
|
||||
m_TopDepth = m_vMD.m_vProperty[0];
|
||||
m_BottomDepth = m_vMD.m_vProperty[1];
|
||||
m_Rlev = m_vMD.m_vProperty[2];
|
||||
}
|
||||
|
||||
float val = 0;
|
||||
valMin.clear();
|
||||
valMax.clear();
|
||||
valMin.resize((waveinfo.SamplePoint)*waveinfo.ArrayNum);
|
||||
valMax.resize((waveinfo.SamplePoint)*waveinfo.ArrayNum);
|
||||
for (int j = 0; j < (waveinfo.SamplePoint)*waveinfo.ArrayNum; j++) {
|
||||
valMin[j] = 999999999;
|
||||
valMax[j] = -99999999;
|
||||
}
|
||||
char buf[200];
|
||||
for (int i = 0; i < samplenum; i++) {
|
||||
for (int j = 0; j < waveinfo.SamplePoint*waveinfo.ArrayNum; j++)
|
||||
{
|
||||
val = GetData(i, j, buf);
|
||||
if (val == 0 || val == -9999 || val == -999.25 || val == -99999 || val == -32767 || val == 32767) continue;
|
||||
if (_isnan(val) || !_finite(val)) continue;
|
||||
if (valMax[j] < val)valMax[j] = val;
|
||||
if (valMin[j] > val)valMin[j] = val;
|
||||
}
|
||||
}
|
||||
if (waveinfo.MaxValue == -50 || waveinfo.MinValue == 50 || fabs(waveinfo.MaxValue) < 1e-6 || waveinfo.MinValue < 1e-6 || waveinfo.MaxValue == -99999 || waveinfo.MaxValue == -9999 || waveinfo.MinValue == 999999 || waveinfo.MinValue == 999999 || waveinfo.MinValue == 99999 || waveinfo.MinValue == 99999 || waveinfo.MinValue == -9999)
|
||||
{
|
||||
float valmin = 99999;
|
||||
float valmax = -99999;
|
||||
for (int j = 0; j < waveinfo.SamplePoint*waveinfo.ArrayNum; j++) {
|
||||
if (valmin > valMax[j]) valmin = valMax[j];
|
||||
if (valmin > valMin[j]) valmin = valMin[j];
|
||||
if (valmax < valMin[j]) valmin = valMin[j];
|
||||
if (valmax < valMax[j]) valmax = valMax[j];
|
||||
}
|
||||
waveinfo.MaxValue = valmax;
|
||||
waveinfo.MinValue = valmin;
|
||||
//BWAVEINFO.MaxValue = valmax;
|
||||
//BWAVEINFO.MinValue = valmin;
|
||||
//logio->SetWaveInfo(curveindex, &BWAVEINFO);
|
||||
}
|
||||
m_sharedMemory.unlock();
|
||||
|
||||
logio->Clear();
|
||||
delete logio;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void FormImage::setSchemIndex(int nidx)
|
||||
{
|
||||
schemIndex = nidx;
|
||||
m_rgbList = QtColorTableData::getInstance()->GetRgb_UseTag(1, schemIndex, 256);
|
||||
}
|
||||
|
||||
void FormImage::paintEvent(QPaintEvent*)
|
||||
{
|
||||
//
|
||||
QPainter painter(this);
|
||||
QRect rect = this->rect();
|
||||
// QRect rect = m_parent->rect();
|
||||
//背景透明
|
||||
painter.fillRect(rect.left(), rect.top(), rect.width(), rect.height(), QColor(0, 0, 0, 0)); //QColor(67, 67, 67, 100)
|
||||
if (m_formTrack)
|
||||
{
|
||||
if (m_pInfo == NULL)
|
||||
{
|
||||
m_pInfo = m_formTrack->getFormInfoByParameters(m_strUuid, m_strWellName, m_strTrackName, m_strLineName);
|
||||
}
|
||||
if (m_pInfo)
|
||||
{
|
||||
if (m_pInfo->m_bShow3D)
|
||||
this->DrawImage3D(&painter, rect);
|
||||
else
|
||||
this->DrawImage(&painter, rect);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void FormImage::s_ResizeDepth(QString strUuid, int nHeight, float fDepthLowerY)
|
||||
{
|
||||
if (m_strUuid != strUuid)
|
||||
return;
|
||||
|
||||
this->setFixedHeight(nHeight);
|
||||
m_fDepthLowerY = qAbs(fDepthLowerY);
|
||||
m_fAddY = m_fDepthLowerY - m_fTopY;
|
||||
}
|
||||
|
||||
void FormImage::s_changeBlack(QString strUuid, bool bBlack)
|
||||
{
|
||||
if (m_strUuid != strUuid || m_bBlack == bBlack)
|
||||
return;
|
||||
m_bBlack = bBlack;
|
||||
m_rgbList = QtColorTableData::getInstance()->GetRgb_UseTag(1, m_bBlack ? 2 : schemIndex, 256);
|
||||
|
||||
update();
|
||||
}
|
||||
|
||||
//自定义滚动条
|
||||
void FormImage::vertScrollBarChanged(QString strUuid, double value, double low, double upper)
|
||||
{
|
||||
if (m_strUuid == strUuid)
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
m_fTopY = value;
|
||||
update();
|
||||
}
|
||||
|
||||
//打印
|
||||
void FormImage::vertScrollBarChanged_Print(QString strUuid, int iNum, int iHeightOfScreen)
|
||||
{
|
||||
if (m_strUuid == strUuid)
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
//上移或下移
|
||||
QRect geoRect = geometry();
|
||||
//
|
||||
double dDelta = iHeightOfScreen * (iNum - 1);
|
||||
setGeometry(0, -dDelta, geoRect.width(), geoRect.height());
|
||||
}
|
||||
|
||||
void FormImage::vertScrollBarChanged_setGeometry(QString strUuid, double value, double low, double upper, int ndepth)
|
||||
{
|
||||
if (m_strUuid == strUuid)
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
m_fTopY = ndepth;
|
||||
update();
|
||||
}
|
||||
|
||||
void FormImage::wheelEvent(QWheelEvent *event) // 滚轮事件
|
||||
{
|
||||
emit CallManage::getInstance()->sig_mouseWheel(event);
|
||||
}
|
||||
|
||||
void FormImage::DrawImage(QPainter* pdc, QRectF mrt1)
|
||||
{
|
||||
if (m_pInfo == NULL)
|
||||
{
|
||||
m_pInfo = m_formTrack->getFormInfoByParameters(m_strUuid, m_strWellName, m_strTrackName, m_strLineName);
|
||||
}
|
||||
if (m_pInfo == NULL)
|
||||
return;
|
||||
|
||||
if (!m_pInfo->m_pImage)
|
||||
{
|
||||
m_pInfo->m_pImage = this;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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 = m_fTopY, edepc = m_fTopY + m_fAddY;
|
||||
|
||||
sdep = sdepc;
|
||||
edep = edepc;
|
||||
flDepthScale = mrt1.height() / (edepc - sdepc);
|
||||
|
||||
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;
|
||||
|
||||
QRectF rt = mrt1;
|
||||
float flDep;
|
||||
int i, ii, j, nPoint = 0, m;
|
||||
QRectF 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)
|
||||
{
|
||||
logio->ReadWave(iIndex, sdep, incount, (void *)value);
|
||||
}
|
||||
else memset(value, 0, incount*nPoint*_wave.CodeLen);
|
||||
|
||||
float depcount = (float)incount / (edep - sdep);
|
||||
float depcount1 = 0;
|
||||
|
||||
QSize qsize;
|
||||
|
||||
int rh = mrt1.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 (m_pInfo)
|
||||
{
|
||||
datatype = m_pInfo->m_nCoord;
|
||||
m_LeftVal = m_pInfo->m_ImgMinVal;
|
||||
m_RightVal = m_pInfo->m_ImgMaxVal;
|
||||
m_flBackVal = -9999;
|
||||
schemIndex = m_pInfo->m_nSchemeIndex;
|
||||
}
|
||||
if (m_rgbList.size() <= 0)
|
||||
{
|
||||
m_rgbList = QtColorTableData::getInstance()->GetRgb_UseTag(1, schemIndex, 256);
|
||||
}
|
||||
QRgb rgbbg = QtColorTableData::getInstance()->getRgb_Bg(schemIndex);
|
||||
|
||||
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(m_rgbList.at(ii));
|
||||
pData[m*nLnBytes + 3 * i + 1] = qGreen(m_rgbList.at(ii));
|
||||
pData[m*nLnBytes + 3 * i + 2] = qBlue(m_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);
|
||||
pdc->drawImage(rt.left() + 1, rt.top(), result);
|
||||
|
||||
delete[]pData; pData = NULL;
|
||||
delete[]value;
|
||||
|
||||
}
|
||||
|
||||
void FormImage::DrawImage3D(QPainter* pdc, QRectF mrt)
|
||||
{
|
||||
if (m_pInfo == NULL)
|
||||
{
|
||||
m_pInfo = m_formTrack->getFormInfoByParameters(m_strUuid, m_strWellName, m_strTrackName, m_strLineName);
|
||||
}
|
||||
if (m_pInfo == NULL)
|
||||
return;
|
||||
|
||||
if (!m_pInfo->m_pImage)
|
||||
{
|
||||
m_pInfo->m_pImage = this;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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 = m_fTopY, edepc = m_fTopY + m_fAddY;
|
||||
|
||||
sdep = sdepc;
|
||||
edep = edepc;
|
||||
flDepthScale = mrt.height() / (edepc - sdepc);
|
||||
|
||||
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 = mrt.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 (m_pInfo)
|
||||
{
|
||||
m_iStartAngle = m_pInfo->m_nOverlook;
|
||||
m_iStartPos = m_pInfo->m_nAzimuth;
|
||||
datatype = m_pInfo->m_nCoord;
|
||||
m_LeftVal = m_pInfo->m_ImgMinVal;
|
||||
m_RightVal = m_pInfo->m_ImgMaxVal;
|
||||
schemIndex = m_pInfo->m_nSchemeIndex;
|
||||
}
|
||||
//QList<QRgb> rgbList = QtColorTableData::getInstance()->GetRgb_UseTag(1, m_nSchemeIndex, 256);
|
||||
if (m_rgbList.size() <= 0)
|
||||
{
|
||||
m_rgbList = QtColorTableData::getInstance()->GetRgb_UseTag(1, schemIndex, 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(m_rgbList.at(ii));// GetBValue(pColorArr[ii]);
|
||||
pData[drawdep*nLnBytes + 3 * (i + dis) + 1] = qGreen(m_rgbList.at(ii));// GetGValue(pColorArr[ii]);
|
||||
pData[drawdep*nLnBytes + 3 * (i + dis) + 2] = qBlue(m_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);
|
||||
pdc->drawImage(mrt.left() + 1, mrt.top(), result);
|
||||
delete[]pData1;
|
||||
delete[]pData;
|
||||
delete[]value;
|
||||
delete logio;
|
||||
}
|
||||
|
||||
double FormImage::GetData(int i, int j, char *buffer)
|
||||
{
|
||||
float yy = -9999;
|
||||
if (m_vProperty.size() > i) {
|
||||
int pos = (int)(i*waveinfo.TimeSamples + j);
|
||||
yy = GetData(waveinfo.RepCode, (char *)&((char *)m_vProperty.m_vProperty)[pos*waveinfo.CodeLen], waveinfo.CodeLen);
|
||||
}
|
||||
return yy;
|
||||
}
|
||||
double FormImage::GetData(int repCode, char *buffer, int repLen)
|
||||
{
|
||||
double yy = -99999;
|
||||
if (!buffer)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
switch (repCode)
|
||||
{
|
||||
case REPR_INT: //0
|
||||
yy = (double)(*((int*)buffer));
|
||||
break;
|
||||
case REPR_SHORT: //1
|
||||
yy = (double)(*((short *)buffer));
|
||||
break;
|
||||
case REPR_LONG://2
|
||||
yy = (double)(*((long *)buffer));
|
||||
break;
|
||||
case REPR_FLOAT://3
|
||||
yy = (double)(*((float *)buffer));
|
||||
break;
|
||||
case REPR_DOUBLE://4
|
||||
yy = (double)(*((double *)buffer));
|
||||
break;
|
||||
case REPR_CHAR://5
|
||||
yy = (double)(*((char *)buffer));
|
||||
break;
|
||||
case REPR_UCHAR://6
|
||||
yy = (double)(*((unsigned char *)buffer));
|
||||
break;
|
||||
case REPR_USHORT://7
|
||||
yy = (double)(*((unsigned short *)buffer));
|
||||
break;
|
||||
case REPR_UINT://8
|
||||
yy = (double)(*((unsigned int *)buffer));
|
||||
break;
|
||||
case REPR_ULONG://9
|
||||
yy = (double)(*((unsigned long *)buffer));
|
||||
break;
|
||||
case REPR_STRING://10
|
||||
if (repLen >= 200)
|
||||
repLen = 199;
|
||||
if (repLen > 0)
|
||||
{
|
||||
memmove(m_strValue, buffer, repLen);
|
||||
m_strValue[repLen] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_strValue[0] = 0;
|
||||
yy = -99999;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return yy;
|
||||
}
|
||||
void FormImage::SetData(int repCode, char *buffer, double yy)
|
||||
{
|
||||
if (!buffer)
|
||||
{
|
||||
return;
|
||||
}
|
||||
switch (repCode)
|
||||
{
|
||||
case REPR_INT: //0
|
||||
(*((int*)buffer)) = (int)yy;
|
||||
break;
|
||||
case REPR_SHORT: //1
|
||||
(*((short *)buffer)) = (short)yy;
|
||||
break;
|
||||
case REPR_LONG://2
|
||||
(*((long *)buffer)) = (long)yy;
|
||||
break;
|
||||
case REPR_FLOAT://3
|
||||
(*((float *)buffer)) = yy;
|
||||
break;
|
||||
case REPR_DOUBLE://4
|
||||
(*((double *)buffer)) = (double)yy;
|
||||
break;
|
||||
case REPR_CHAR://5
|
||||
(*((char *)buffer)) = (char)yy;
|
||||
break;
|
||||
case REPR_UCHAR://6
|
||||
(*((unsigned char *)buffer)) = (unsigned char)yy;
|
||||
break;
|
||||
case REPR_USHORT://7
|
||||
(*((unsigned short *)buffer)) = (unsigned short)yy;
|
||||
break;
|
||||
case REPR_UINT://8
|
||||
(*((unsigned int *)buffer)) = (unsigned int)yy;
|
||||
break;
|
||||
case REPR_ULONG://9
|
||||
(*((unsigned long *)buffer)) = (unsigned long)yy;
|
||||
break;
|
||||
case REPR_STRING://10
|
||||
// *yy=-99999;
|
||||
break;
|
||||
}
|
||||
return;
|
||||
}
|
||||
114
logPlus/formimage.h
Normal file
114
logPlus/formimage.h
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
#ifndef FormImage_H
|
||||
#define FormImage_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <QVariant>
|
||||
#include <QSharedMemory>
|
||||
|
||||
#include "BaseFun.h"
|
||||
#include "MemRdWt.h"
|
||||
|
||||
#pragma execution_character_set("utf-8")
|
||||
|
||||
namespace Ui {
|
||||
class FormImage;
|
||||
}
|
||||
|
||||
class FormTrack;
|
||||
class FormInfo;
|
||||
class FormImage : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit FormImage(QWidget *parent = nullptr, QString strSlfName = "", QString strWellName = "", QString strTrackName = "", QString strLineName = "");
|
||||
~FormImage();
|
||||
|
||||
void initGeometry(QString strUuid, int nscale, double fW, int nH);
|
||||
|
||||
void setDepthY(float fy1, float fy2);
|
||||
//改变深度更新绘图
|
||||
void updateDepthY(float fy1, float fy2);
|
||||
|
||||
bool LoadFromSLF_wave();
|
||||
// 改变色板
|
||||
void setSchemIndex(int nidx);
|
||||
|
||||
private:
|
||||
Ui::FormImage *ui;
|
||||
|
||||
protected:
|
||||
void paintEvent(QPaintEvent *event);
|
||||
virtual void wheelEvent(QWheelEvent *event);
|
||||
|
||||
void DrawImage(QPainter* pdc, QRectF mrt);
|
||||
void DrawImage3D(QPainter* pdc, QRectF mrt);
|
||||
|
||||
double GetData(int i, int j, char *buffer);
|
||||
double GetData(int repCode, char *buffer, int repLen = 0);
|
||||
void SetData(int repCode, char *buffer, double yy);
|
||||
|
||||
bool IsFiniteNumber(float v)
|
||||
{
|
||||
return qIsFinite(v) != 0;
|
||||
}
|
||||
|
||||
public:
|
||||
QString m_strUuid;
|
||||
QString m_strSlfName;
|
||||
QString m_strWellName;
|
||||
QString m_strTrackName;
|
||||
QString m_strLineName;
|
||||
|
||||
QWidget *m_parent;
|
||||
|
||||
FormTrack *m_formTrack = NULL;
|
||||
FormInfo* m_pInfo = NULL;
|
||||
|
||||
float m_iY1, m_iY2;
|
||||
int m_iScale = 200;
|
||||
double m_wellTop = 0.0;
|
||||
double m_dTopDepth = 0.0;
|
||||
|
||||
QSharedMemory m_sharedMemory;
|
||||
|
||||
PFLOATPROPERTY m_vMD;
|
||||
PFLOATPROPERTY m_vProperty;
|
||||
MyDataTypeEnum vVdl;
|
||||
|
||||
Slf_WAVE waveinfo;
|
||||
float m_SDep, m_EDep, m_Rlev;
|
||||
float m_PlotSdep = 0.0f;
|
||||
int m_nSamples; //每深度间隔的数据点
|
||||
int m_PointNum;
|
||||
QVector <double> valMin, valMax;
|
||||
double m_TopDepth;
|
||||
double m_BottomDepth;
|
||||
|
||||
QList<QRgb> m_rgbList;
|
||||
char m_strValue[200];
|
||||
int CtrlCurve = 0;
|
||||
int PickFlag = 0;
|
||||
float m_fTopY = 0.0f;
|
||||
float m_fDepthLowerY = 0.0f;
|
||||
float m_fAddY = 29.0f;
|
||||
|
||||
int schemIndex = 1;
|
||||
int colornum = 256;
|
||||
// 黑白图
|
||||
bool m_bBlack = false;
|
||||
public:
|
||||
//void DrawWave(QPainter* pdc, QRectF mrt1);
|
||||
|
||||
public slots:
|
||||
void s_ResizeDepth(QString strUuid, int nHeight, float fDepthLowerY);
|
||||
// 黑白图
|
||||
void s_changeBlack(QString strUuid, bool bBlack);
|
||||
|
||||
//滚动条
|
||||
void vertScrollBarChanged(QString strUuid, double value, double low, double upper);
|
||||
void vertScrollBarChanged_Print(QString strUuid, int iNum, int iHeightOfScreen);
|
||||
void vertScrollBarChanged_setGeometry(QString strUuid, double value, double low, double upper, int ndepth);
|
||||
};
|
||||
|
||||
#endif // FormImage_H
|
||||
33
logPlus/formimage.ui
Normal file
33
logPlus/formimage.ui
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>FormImage</class>
|
||||
<widget class="QWidget" name="FormImage">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
|
@ -12,6 +12,7 @@
|
|||
#include "qtColorSchemeComboBox.h"
|
||||
#include "DrawTvd.h"
|
||||
#include "formwave.h"
|
||||
#include "formimage.h"
|
||||
|
||||
//曲线名称(单个)
|
||||
FormInfo::FormInfo(QWidget *parent, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QColor lineColor) :
|
||||
|
|
@ -2794,6 +2795,10 @@ bool FormInfo::setInfoProperty(QString strProName, QVariant val, QString strGp)
|
|||
else if ("配色方案" == strProName)
|
||||
{
|
||||
this->m_nSchemeIndex = val.toInt();
|
||||
if (m_pImage)
|
||||
{
|
||||
m_pImage->setSchemIndex(this->m_nSchemeIndex);
|
||||
}
|
||||
}
|
||||
// else if ("背景值" == strProName)
|
||||
// {
|
||||
|
|
@ -2813,6 +2818,10 @@ bool FormInfo::setInfoProperty(QString strProName, QVariant val, QString strGp)
|
|||
{
|
||||
m_pWave->update();
|
||||
}
|
||||
if (m_pImage)
|
||||
{
|
||||
m_pImage->update();
|
||||
}
|
||||
return bDraw;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ namespace Ui {
|
|||
class FormInfo;
|
||||
}
|
||||
|
||||
class FormImage;
|
||||
class FormWave;
|
||||
class CDrawTvd;
|
||||
class FormInfo : public QWidget
|
||||
|
|
@ -268,6 +269,7 @@ public:
|
|||
//斜井三图一表(井斜数据表参数)
|
||||
CDrawTvd *m_pTvd;
|
||||
FormWave* m_pWave = NULL;
|
||||
FormImage* m_pImage = NULL;
|
||||
|
||||
// 深度
|
||||
QColor m_sdRulerColor; // 标尺颜色
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<QtMoc Include="formwave.h" />
|
||||
<QtMoc Include="formimage.h" />
|
||||
<ClInclude Include="LogmuditemDrawer.h" />
|
||||
<QtMoc Include="LogmudResultItem.h" />
|
||||
<QtMoc Include="selectlinedialog.h" />
|
||||
|
|
@ -165,6 +166,7 @@
|
|||
<ClCompile Include="FormBase.cpp" />
|
||||
<ClCompile Include="formdraw.cpp" />
|
||||
<ClCompile Include="formhead.cpp" />
|
||||
<ClCompile Include="formimage.cpp" />
|
||||
<ClCompile Include="forminfo.cpp" />
|
||||
<ClCompile Include="formline.cpp" />
|
||||
<ClCompile Include="formlogmud.cpp" />
|
||||
|
|
@ -230,6 +232,7 @@
|
|||
<ItemGroup>
|
||||
<QtUic Include="formdraw.ui" />
|
||||
<QtUic Include="formhead.ui" />
|
||||
<QtUic Include="formimage.ui" />
|
||||
<QtUic Include="forminfo.ui" />
|
||||
<QtUic Include="formline.ui" />
|
||||
<QtUic Include="formlogmud.ui" />
|
||||
|
|
|
|||
|
|
@ -322,6 +322,9 @@
|
|||
<QtMoc Include="formwave.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</QtMoc>
|
||||
<QtMoc Include="formimage.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</QtMoc>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="backgrounddelegate.cpp">
|
||||
|
|
@ -675,6 +678,9 @@
|
|||
<ClCompile Include="formwave.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="formimage.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<QtRcc Include="logplus.qrc">
|
||||
|
|
@ -751,5 +757,8 @@
|
|||
<QtUic Include="formwave.ui">
|
||||
<Filter>Form Files</Filter>
|
||||
</QtUic>
|
||||
<QtUic Include="formimage.ui">
|
||||
<Filter>Form Files</Filter>
|
||||
</QtUic>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
Loading…
Reference in New Issue
Block a user