📄 filmdesignview.cpp
字号:
// FilmDesignView.cpp : implementation of the CFilmDesignView class
//
#include "stdafx.h"
#include "FilmDesign.h"
//#include "dibapi.h"
#include "ShowDataDlg.h"
#include "FilmDesignDoc.h"
#include "FilmDesignView.h"
#include "AxisDlg.h"
#include "ThicknessKindSet.h"
#include "Parameter.h"
#include "LineParameter.h"
#include "ShowData.h"
#include "Read.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define PI 3.1415926
/////////////////////////////////////////////////////////////////////////////
// CFilmDesignView
IMPLEMENT_DYNCREATE(CFilmDesignView, CView)
BEGIN_MESSAGE_MAP(CFilmDesignView, CView)
//{{AFX_MSG_MAP(CFilmDesignView)
ON_WM_LBUTTONDOWN()
ON_COMMAND(ID_SET_AXIS, OnSetAxis)
ON_WM_LBUTTONDBLCLK()
ON_COMMAND(ID_THICKNESSKIND, OnThicknesskind)
ON_COMMAND(ID_DRAW_PARAMETER, OnDrawParameter)
ON_COMMAND(ID_DRAW_PROPERTY, OnDrawProperty)
ON_WM_MOUSEMOVE()
ON_COMMAND(ID_LINE_PARAMETER, OnLineParameter)
ON_COMMAND(ID_DATA_TABLE, OnDataTable)
ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
ON_COMMAND(ID_COPY_VIEW, OnCopyView)
ON_COMMAND(ID_FILE_SAVE, OnFileSave)
ON_WM_VSCROLL()
ON_COMMAND(ID_THICKNE_OTOP, OnThickneOtop)
ON_UPDATE_COMMAND_UI(ID_THICKNE_OTOP, OnUpdateThickneOtop)
ON_COMMAND(ID_THICKNESS_PTOO, OnThicknessPtoo)
ON_UPDATE_COMMAND_UI(ID_THICKNESS_PTOO, OnUpdateThicknessPtoo)
ON_COMMAND(ID_SYSTEM_NEW, OnSystemNew)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFilmDesignView construction/destruction
CFilmDesignView::CFilmDesignView()
{
// CMenu* mmenu = GetMenu();
// CMenu* submenu = mmenu->GetSubMenu(0);
// submenu->EnableMenuItem(ID_FILE_NEW, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
}
CFilmDesignView::~CFilmDesignView()
{
}
BOOL CFilmDesignView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CFilmDesignView drawing
void CFilmDesignView::OnDraw(CDC* pDC)
{
CFilmDesignDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CRect rect;
GetClientRect(&rect);
m_Picture.GetAxis().Draw(pDC,rect);//do axis
//Draw Shape
int kind=m_Picture.GetShapeofkind();
m_Picture.DrawPicture(pDC,kind);
}
/////////////////////////////////////////////////////////////////////////////
// CFilmDesignView printing
BOOL CFilmDesignView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CFilmDesignView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CFilmDesignView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CFilmDesignView diagnostics
#ifdef _DEBUG
void CFilmDesignView::AssertValid() const
{
CView::AssertValid();
}
void CFilmDesignView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CFilmDesignDoc* CFilmDesignView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CFilmDesignDoc)));
return (CFilmDesignDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CFilmDesignView message handlers
void CFilmDesignView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CView::OnLButtonDown(nFlags, point);
}
void CFilmDesignView::OnSetAxis()
{
// TODO: Add your command handler code here
CAxisDlg dlg;
dlg.m_Axis_Startx=m_Picture.GetAxis().GetMinx();
dlg.m_Axis_Starty=m_Picture.GetAxis().GetMiny();
dlg.m_Axis_Endx =m_Picture.GetAxis().GetMaxx();
dlg.m_Axis_Endy=m_Picture.GetAxis().GetMaxy();
dlg.m_Axis_Width=m_Picture.GetAxis().GetWidth();
dlg.SetColorx(m_Picture.GetAxis().GetColor()[0]);
dlg.SetColory(m_Picture.GetAxis().GetColor()[1]);
dlg.m_InterValx=m_Picture.GetAxis().GetIntervalx();
dlg.m_Intervaly=m_Picture.GetAxis().GetIntervaly();
dlg.m_Centerx=m_Picture.GetAxis().GetCenter().x;
dlg.m_Centery=m_Picture.GetAxis().GetCenter().y;
int response=dlg.DoModal();
//dlg.UpdateData(true);
if(response==IDOK)
{
m_Picture.SetAxis(dlg.m_Axis_Startx ,dlg.m_Axis_Endx,dlg.m_Axis_Starty,dlg.m_Axis_Endy,dlg.m_InterValx,dlg.m_Intervaly);
m_Picture.SetText(dlg.m_Lable_x ,dlg.m_Lable_y);
m_Picture.SetAxisWidth(dlg.m_Axis_Width);
m_Picture.SetColor(dlg.GetColorx(),dlg.GetColory());
m_Picture.SetCenter(dlg.m_Centerx,dlg.m_Centery);
}
this->RedrawWindow();
}
void CFilmDesignView::OnInitialUpdate()
{
CView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
}
void CFilmDesignView::OnLButtonDblClk(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CPoint dot=m_Picture.GetAxis().GetCenter();
if((point.x>=dot.x && point.y>=dot.y*0.98&& point.y<=dot.y*1.05)||(point.y<=dot.y && point.x<=dot.x*1.05 && point.y>=dot.x*0.998))
this->OnSetAxis();
CView::OnLButtonDblClk(nFlags, point);
}
void CFilmDesignView::OnThicknesskind()
{
// TODO: Add your command handler code here
CThicknessKindSet dlg;
int kind=m_Picture.GetThickKind();
if(kind==1) dlg.m_ThicknessKind=1;
else if(kind==2) dlg.m_ThicknessKind=2;
else dlg.m_ThicknessKind=1;
dlg.DoModal();
m_Picture.SetThickKind(dlg.m_ThicknessKind);
this->RedrawWindow();
}
void CFilmDesignView::OnDrawParameter()
{
// TODO: Add your command handler code here
CParameter dlg;
dlg.m_Angle=this->m_Picture.GetAngle();
dlg.m_InN=m_Picture.GetInN();
dlg.m_VibrateKind=m_Picture.GetVibrateKind();
dlg.m_WaveLength=m_Picture.GetWaveLength();
if(this->m_Picture.GetThickKind()==1)
dlg.m_Show=_T("不用参考波长");
if(dlg.DoModal()==IDOK)
{
this->m_Picture.SetAngle(dlg.m_Angle*PI/180 );
if(this->m_Picture.GetThickKind()!=1)
this->m_Picture.SetWaveLength(dlg.m_WaveLength);
this->m_Picture.SetVibrateKind(dlg.m_VibrateKind);
int select=dlg.m_Selected;
switch(select)
{
case 1: m_Picture.SetShapeofkind(1);break;
case 2: m_Picture.SetShapeofkind(2);break;
case 3: m_Picture.SetShapeofkind(3);break ;
default: break;
}
}
this->RedrawWindow();
}
void CFilmDesignView::OnDrawProperty()
{
// TODO: Add your command handler code here
CDC* pDC=GetDC();
CRect rect;
GetClientRect(&rect);
//m_Picture.SetShapeofkind(0);
m_Picture.InPutData();
//this->RedrawWindow();
m_Picture.Compute(pDC,rect);
this->RedrawWindow();
}
void CFilmDesignView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
float logicx,logicy;
logicx=float((point.x-m_Picture.GetAxis().GetCenter().x)/m_Picture.GetAxis().GetRatio()[0]+m_Picture.GetAxis().GetMinx());
logicy=float((m_Picture.GetAxis().GetCenter().y-point.y)/m_Picture.GetAxis().GetRatio()[1]+m_Picture.GetAxis().GetMiny());
CString s1,s2;
s1.Format("%3.1f", logicx );
s2.Format("%2.1f",logicy);
dc.TextOut(200,10,"X: "+s1+" --- "+"Y "+s2);
CView::OnMouseMove(nFlags, point);
}
void CFilmDesignView::OnLineParameter()
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -