📄 calsizereset.cpp
字号:
// CalSizeReset.cpp : implementation file
//
#include "stdafx.h"
#include "Lens_Design.h"
#include "CalSizeReset.h"
//#include "Lens_DesignView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CCalSizeReset dialog
CCalSizeReset::CCalSizeReset(CWnd* pParent /*=NULL*/,int Quadrant)
: CDialog(CCalSizeReset::IDD, pParent)
{
//{{AFX_DATA_INIT(CCalSizeReset)
m_CpNx = 80;
m_CpNy = 60;
m_CsDx = 20.0;
m_CsDy = 15.0;
m_CsX = 512.0;//512.0;
m_CsY = 384.0;//384.0;
m_RdX=0.40;
m_RdY=0.60;
//}}AFX_DATA_INIT
i_Quadrant=Quadrant;
}
void CCalSizeReset::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCalSizeReset)
DDX_Text(pDX, IDC_CalPointNumX, m_CpNx);
DDV_MinMaxInt(pDX, m_CpNx, 0, 200);
DDX_Text(pDX, IDC_CalPointNumY, m_CpNy);
DDV_MinMaxInt(pDX, m_CpNy, 0, 180);
DDX_Text(pDX, IDC_CalSizeDx, m_CsDx);
DDV_MinMaxDouble(pDX, m_CsDx, 0., 30.);
DDX_Text(pDX, IDC_CalSizeDy, m_CsDy);
DDV_MinMaxDouble(pDX, m_CsDy, 0., 30.);
DDX_Text(pDX, IDC_CalSizeX, m_CsX);
DDV_MinMaxDouble(pDX, m_CsX, 0., 800.);
DDX_Text(pDX, IDC_CalSizeY, m_CsY);
DDV_MinMaxDouble(pDX, m_CsY, 0., 600.);
DDX_Text(pDX, IDC_RATIONUMBERX, m_RdX);
DDV_MinMaxDouble(pDX, m_RdX, 0., 1.);
DDX_Text(pDX, IDC_RATIONUMBERY, m_RdY);
DDV_MinMaxDouble(pDX, m_RdY, 0., 1.);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCalSizeReset, CDialog)
//{{AFX_MSG_MAP(CCalSizeReset)
ON_BN_CLICKED(IDC_TODRAW, OnTodraw)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCalSizeReset message handlers
void CCalSizeReset::OnTodraw()
{
int Col0,Row0;
int DCol,DRow;
double Drtx,Drty;
double Ratex,Ratey;
int Col1,Col2,Row1,Row2;
int N1,N2;
int m_Draw;
N1=i_Quadrant;
i_Quadrant=0;
Col0=300,Row0=200,DCol=290,DRow=190,Ratex=2.0/3.0;Ratey=0.5;
// TODO: Add your control notification handler code here
int ret=AfxMessageBox("Are you sure to Update data",MB_YESNO );
if(ret!=IDYES)
{
return;
}
UpdateData();
CPaintDC dc(this); // device context for painting
CWnd* pWnd = GetDlgItem(IDC_DRAWWINDOW);
CDC* pCDC=pWnd->GetDC();
pWnd->Invalidate();
pWnd->UpdateWindow();
m_Draw=1;
//坐标,X轴,Y轴
CPen newPen1(PS_DASHDOT,0,RGB(128,0,0));
pCDC->SelectObject(&newPen1);
pCDC->MoveTo(Col0,Row0),pCDC->LineTo(Col0-DCol,Row0);
pCDC->MoveTo(Col0,Row0),pCDC->LineTo(Col0,Row0-DRow);
pCDC->MoveTo(Col0,Row0),pCDC->LineTo(Col0+DCol,Row0);
pCDC->MoveTo(Col0,Row0),pCDC->LineTo(Col0,Row0+DRow);
//计算面的框;有效面的框。
CPen newPen2(PS_SOLID,0,RGB(0,255,255));
pCDC->SelectObject(&newPen2);
Col1=int(m_CsX*Ratex/2),Row1=int(m_CsY*Ratey/2);
Col2=int(m_CsDx*Ratex),Row2=int(m_CsDy*Ratey);
Drtx=(Col1*1.0+Col2*1.0)/m_CpNx,Drty=(Row1*1.0+Row2*1.0)/m_CpNy;
for(N1=(1-m_CpNx)/2;N1<=(m_CpNx-1)/2;N1++)
{
pCDC->MoveTo(int(Col0+Drtx*N1*2),Row0-Row1-Row2);
pCDC->LineTo(int(Col0+Drtx*N1*2),Row0+Row1+Row2);
}
for(N2=(1-m_CpNy)/2;N2<=(m_CpNy-1)/2;N2++)
{
pCDC->MoveTo(Col0-Col1-Col2,Row0-int(Drty*N2*2));
pCDC->LineTo(Col0+Col1+Col2,Row0-int(Drty*N2*2));
}
CPen newPen3(PS_SOLID,0,RGB(0,128,0));
pCDC->SelectObject(&newPen3);
pCDC->MoveTo(Col0-Col1,Row0-Row1);
pCDC->LineTo(Col0-Col1,Row0+Row1);
pCDC->LineTo(Col0+Col1,Row0+Row1);
pCDC->LineTo(Col0+Col1,Row0-Row1);
pCDC->LineTo(Col0-Col1,Row0-Row1);
pCDC->MoveTo(Col0-Col1-Col2,Row0-Row1-Row2);
pCDC->LineTo(Col0-Col1-Col2,Row0+Row1+Row2);
pCDC->LineTo(Col0+Col1+Col2,Row0+Row1+Row2);
pCDC->LineTo(Col0+Col1+Col2,Row0-Row1-Row2);
pCDC->LineTo(Col0-Col1-Col2,Row0-Row1-Row2);
////增加的计算点的范围。第一象限
pCDC->MoveTo(Col0+int((Col1+Col2)*(1-m_RdX)),Row0-int((Row1+Row2)*(1-m_RdY)));
pCDC->LineTo(Col0+int((Col1+Col2)*(1-m_RdX)),Row0-Row1-Row2-10);
pCDC->MoveTo(Col0+int((Col1+Col2)*(1-m_RdX)),Row0-int((Row1+Row2)*(1-m_RdY)));
pCDC->LineTo(Col0+Col1+Col2+10,Row0-int((Row1+Row2)*(1-m_RdY)));
///第二象限
pCDC->MoveTo(Col0-int((Col1+Col2)*(1-m_RdX)),Row0-int((Row1+Row2)*(1-m_RdY)));
pCDC->LineTo(Col0-int((Col1+Col2)*(1-m_RdX)),Row0-Row1-Row2-10);
pCDC->MoveTo(Col0-int((Col1+Col2)*(1-m_RdX)),Row0-int((Row1+Row2)*(1-m_RdY)));
pCDC->LineTo(Col0-Col1-Col2-10,Row0-int((Row1+Row2)*(1-m_RdY)));
///第三象限
pCDC->MoveTo(Col0-int((Col1+Col2)*(1-m_RdX)),Row0+int((Row1+Row2)*(1-m_RdY)));
pCDC->LineTo(Col0-int((Col1+Col2)*(1-m_RdX)),Row0+Row1+Row2+10);
pCDC->MoveTo(Col0-int((Col1+Col2)*(1-m_RdX)),Row0+int((Row1+Row2)*(1-m_RdY)));
pCDC->LineTo(Col0-Col1-Col2-10,Row0+int((Row1+Row2)*(1-m_RdY)));
////第四象限
pCDC->MoveTo(Col0+int((Col1+Col2)*(1-m_RdX)),Row0+int((Row1+Row2)*(1-m_RdY)));
pCDC->LineTo(Col0+int((Col1+Col2)*(1-m_RdX)),Row0+Row1+Row2+10);
pCDC->MoveTo(Col0+int((Col1+Col2)*(1-m_RdX)),Row0+int((Row1+Row2)*(1-m_RdY)));
pCDC->LineTo(Col0+Col1+Col2+10,Row0+int((Row1+Row2)*(1-m_RdY)));
///文字说明。
CPen newPen4(PS_SOLID,0,RGB(0,0,128));
pCDC->SelectObject(&newPen4);
pCDC->TextOut(Col0-Col1+Col2/2-60,Row0-Row1+Row2/2-60,"计算面");
pCDC->MoveTo(Col0-Col1+Col2/2-30,Row0-Row1+Row2/2-45);
pCDC->LineTo(Col0-Col1-Col2/2,Row0-Row1-Row2/2);
pCDC->TextOut(Col0-Col1+Col2/2+60,Row0-Row1+Row2/2-60,"有效面");
pCDC->MoveTo(Col0-Col1+Col2/2+90,Row0-Row1+Row2/2-45);
pCDC->LineTo(Col0-Col1+Col2+110,Row0-Row1+Row2);
pCDC->TextOut(Col0+int((Col1+Col2)*(1-m_RdX))+40,Row0-Row1+Row2/2-60,"增加点");
pCDC->MoveTo(Col0+int((Col1+Col2)*(1-m_RdX))+20,Row0-int((Row1+Row2)*(1-m_RdY))-40);
pCDC->LineTo(Col0+int((Col1+Col2)*(1-m_RdX))+40,Row0-Row1+Row2/2-60);
}
////////////
void CCalSizeReset::EnableButtonAllSn(BOOL bEnable)
{
GetDlgItem(IDC_TODRAW)->EnableWindow(bEnable);
}
void CCalSizeReset::EnableSaveButtonSn()
{
GetDlgItem(IDC_TODRAW)->EnableWindow(false);
}
BOOL CCalSizeReset::OnInitDialog()
{
CDialog::OnInitDialog();
if (i_Quadrant==0)
{
m_CpNx = 23;
m_CpNy = 19;
m_CsDx = 25.0;
m_CsDy = 25.0;
m_CsX = 512.0;//512.0;
m_CsY = 384.0;//384.0;
m_RdX=0.4;
m_RdY=0.6;
}
// TODO: Add extra initialization here
UpdateData(false);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -