📄 curvecomposewnd.cpp
字号:
// CurveComposeWnd.cpp : implementation file
//
#include "stdafx.h"
#include "WellDataProcess.h"
#include "CurveComposeWnd.h"
#include "GlobalData.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CCurveComposeWnd
CCurveComposeWnd::CCurveComposeWnd()
{
m_pOrigGmgsData = new COrigGmgsData;
m_pWellTraceData = new CSeisTraceData;
g_pCurveComWnd = this;
m_bHaveData = FALSE;
m_nShowKind = SHOW_NULL;
}
CCurveComposeWnd::~CCurveComposeWnd()
{
delete [] m_pOrigGmgsData;
delete [] m_pWellTraceData;
}
BEGIN_MESSAGE_MAP(CCurveComposeWnd, CWndEx)
//{{AFX_MSG_MAP(CCurveComposeWnd)
ON_WM_CREATE()
ON_WM_PAINT()
ON_WM_ERASEBKGND()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCurveComposeWnd message handlers
int CCurveComposeWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CWndEx::OnCreate(lpCreateStruct) == -1)
return -1;
return 0;
}
void CCurveComposeWnd::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
ReDraw();
// Do not call CWndEx::OnPaint() for painting messages
}
BOOL CCurveComposeWnd::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
CRect rc;
GetClientRect(&rc);
pDC->Rectangle(&rc);
return TRUE;
// return CWndEx::OnEraseBkgnd(pDC);
}
void CCurveComposeWnd::ReDraw()
{
if(m_bHaveData)
{
CDC *pDC = GetDC();
CRect rect;
pDC->GetClipBox (rect);
pDC->BitBlt (rect.left,rect.top,rect.Width(),rect.Height(),&m_memDC,rect.left,rect.top,SRCCOPY);
ReleaseDC(pDC);
}
}
#include "GMGDataManager.h"
void CCurveComposeWnd::ReadData()
{
CGMGDataManager gmgdataManager;
CString strFileName = GetAppPath();
m_pOrigGmgsData->ClearData();
m_pWellTraceData->ClearData();
switch(m_nShowKind)
{
case SHOW_GMGS_CURVE:
{
strFileName = strFileName + "\\Data\\mt.dat";
gmgdataManager.InitFileName(strFileName);
gmgdataManager.GetOrigGmgsData(m_pOrigGmgsData);
m_pOrigGmgsData->InitVariation(COR_RED, 2, PS_SOLID, 80, 100, 200, 500, 40);
m_bHaveData = TRUE;
}
break;
case SHOW_SYNTH_TRACE:
{
strFileName = strFileName + "\\Data\\OrigSeis.txt";
gmgdataManager.InitFileName(strFileName);
gmgdataManager.GetWellSideTraceData(m_pWellTraceData);
m_pWellTraceData->InitVariation(RGB(100, 225, 225), 1, PS_SOLID, 10, 10, 350, 630, 30);
m_bHaveData = TRUE;
}
break;
default:
break;
}
}
void CCurveComposeWnd::CreateMemDC(int nWidth,int nHeight)
{
HDC hDC = ::GetDC(NULL);
CDC* pDeskDC = CDC::FromHandle (hDC);
m_memDC.CreateCompatibleDC(pDeskDC);
m_bmp.CreateCompatibleBitmap(pDeskDC, nWidth, nHeight);
//一定要有此句,DC与Bmp联结上,DC用来作操作接口,Bmp用来保存图像数据
m_memDC.SelectObject(&m_bmp);
m_memDC.PatBlt(0,0,nWidth,nHeight,WHITENESS);
}
void CCurveComposeWnd::DrawMapInMem(CDC* pDC)
{
CRect rect;
GetClientRect(rect);
pDC->FillSolidRect(rect, RGB(0, 0, 0));
switch(m_nShowKind)
{
case SHOW_GMGS_CURVE:
{
PutText(TRUE, 170, 50, 20, 0, "电磁曲线对比", pDC);
PutText(TRUE, 90, 80, 14, 0, "实测电磁曲线", pDC);
PutText(TRUE, 170, 80, 14, 0, "正演计算曲线", pDC);
PutText(TRUE, 250, 80, 14, 0, "反演后的曲线", pDC);
CRect rect1(48, 78, 52, 82);
EraseRect(pDC, rect1, COR_RED);
CRect rect2(128, 78, 132, 82);
EraseRect(pDC, rect2, COR_GREEN);
CRect rect3(208, 78, 212, 82);
EraseRect(pDC, rect3, COR_BLUE);
m_pOrigGmgsData->Draw(pDC);
}
break;
case SHOW_SYNTH_TRACE:
{
// PutText(TRUE, 100, 20, 20, 0, "井旁地震道", pDC);
// PutText(TRUE, 270, 20, 20, 0, "合成地震道", pDC);
// m_pSynthTraceData->Draw(pDC);
m_pWellTraceData->Draw(pDC);
}
break;
default:
break;
}
DrawRect(pDC, rect, COR_BLACK);
}
void CCurveComposeWnd::Plot()
{
CRect rect;
GetClientRect(rect);
if(!m_memDC)
CreateMemDC(rect.Width(), rect.Height());
DrawMapInMem(&m_memDC);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -