📄 shezhidlg.cpp
字号:
// ShezhiDlg.cpp : implementation file
//
#include "stdafx.h"
#include "PlayDraw.h"
#include "ShezhiDlg.h"
#include "PlayDrawView.h"
#include "Matrix.h"
#define PI 3.14159265
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CShezhiDlg dialog
CShezhiDlg::CShezhiDlg(CWnd* pParent /*=NULL*/)
: CDialog(CShezhiDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CShezhiDlg)
m_duichengX = 0.0f;
m_duichengY = 0.0f;
m_x1 = 0.0f;
m_x2 = 0.0f;
m_x3 = 0.0f;
m_y1 = 0.0f;
m_y2 = 0.0f;
m_y3 = 0.0f;
m_jiaodu = 0.0f;
m_pingyiX = 0.0f;
m_pingyiY = 0.0f;
m_xuanzhuanX = 0.0f;
m_xuanzhuanY = 0.0f;
m_biliX = 0.0f;
m_biliY = 0.0f;
//}}AFX_DATA_INIT
}
void CShezhiDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CShezhiDlg)
DDX_Text(pDX, IDC_duichengX, m_duichengX);
DDX_Text(pDX, IDC_duichengY, m_duichengY);
DDX_Text(pDX, IDC_EDITx1, m_x1);
DDX_Text(pDX, IDC_EDITx2, m_x2);
DDX_Text(pDX, IDC_EDITx3, m_x3);
DDX_Text(pDX, IDC_EDITy1, m_y1);
DDX_Text(pDX, IDC_EDITy2, m_y2);
DDX_Text(pDX, IDC_EDITy3, m_y3);
DDX_Text(pDX, IDC_jiaodu, m_jiaodu);
DDX_Text(pDX, IDC_pingyiX, m_pingyiX);
DDX_Text(pDX, IDC_pingyiY, m_pingyiY);
DDX_Text(pDX, IDC_xuanzhuanX, m_xuanzhuanX);
DDX_Text(pDX, IDC_xuanzhuanY, m_xuanzhuanY);
DDX_Text(pDX, IDC_biliX, m_biliX);
DDX_Text(pDX, IDC_biliY, m_biliY);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CShezhiDlg, CDialog)
//{{AFX_MSG_MAP(CShezhiDlg)
ON_BN_CLICKED(IDC_BILI, OnBili)
ON_BN_CLICKED(IDC_DUICHENG, OnDuicheng)
ON_BN_CLICKED(IDC_PINGYI, OnPingyi)
ON_BN_CLICKED(IDC_XUANZHUAN, OnXuanzhuan)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CShezhiDlg message handlers
void CShezhiDlg::OnBili()
{
// TODO: Add your control notification handler code here
UpdateData(true);// 获取输入值
CClientDC dc(m_parent);//创建指向主窗口视图的CClientDC对象。
/*
比例坐标变换
*/
POINT p1,p2,p3;
CMatrix point1(m_x1,m_y1);
p1=(POINT)point1.Resize(m_biliX,m_biliY);
CMatrix point2(m_x2,m_y2);
p2=point2.Resize(m_biliX,m_biliY);
CMatrix point3(m_x3,m_y3);
p3=point3.Resize(m_biliX,m_biliY);
CRect rect;
m_parent->GetClientRect(rect);
m_parent->ScreenToClient(rect);
SetMapMode((HDC)dc,MM_LOENGLISH);
SetViewportOrgEx((HDC)dc,512,360,NULL);
CPen pen(PS_SOLID,1,m_color);//设置画笔
CPen *pOldPen = dc.SelectObject(&pen);
dc.MoveTo((int)p1.x,(int)p1.y);
dc.LineTo((int)p2.x,(int)p2.y);
dc.MoveTo((int)p2.x,(int)p2.y);
dc.LineTo((int)p3.x,(int)p3.y);
dc.MoveTo((int)p3.x,(int)p3.y);
dc.LineTo((int)p1.x,(int)p1.y);
dc.SelectObject(pOldPen);
}
void CShezhiDlg::OnDuicheng()
{
// TODO: Add your control notification handler code here
UpdateData(true);// 获取输入值
CClientDC dc(m_parent);//创建指向主窗口视图的CClientDC对象。
/*
对称坐标变换
*/
POINT p1,p2,p3;
CMatrix point1(m_x1,m_y1);
p1=point1.Symmetry(m_duichengX,m_duichengY);
CMatrix point2(m_x2,m_y2);
p2=point2.Symmetry(m_duichengX,m_duichengY);
CMatrix point3(m_x3,m_y3);
p3=point3.Symmetry(m_duichengX,m_duichengY);
CRect rect;
m_parent->GetClientRect(rect);
m_parent->ScreenToClient(rect);
SetMapMode((HDC)dc,MM_LOENGLISH);
SetViewportOrgEx((HDC)dc,512,360,NULL);
CPen pen(PS_SOLID,1,m_color);//设置画笔
CPen *pOldPen = dc.SelectObject(&pen);
dc.MoveTo((int)p1.x,(int)p1.y);
dc.LineTo((int)p2.x,(int)p2.y);
dc.MoveTo((int)p2.x,(int)p2.y);
dc.LineTo((int)p3.x,(int)p3.y);
dc.MoveTo((int)p3.x,(int)p3.y);
dc.LineTo((int)p1.x,(int)p1.y);
dc.SelectObject(pOldPen);
}
void CShezhiDlg::OnPingyi()
{
// TODO: Add your control notification handler code here
UpdateData(true);// 获取输入值
CClientDC dc(m_parent);//创建指向主窗口视图的CClientDC对象。
/*平移坐标变换
m_x1 += m_pingyiX;
m_y1 += m_pingyiY;
m_x2 += m_pingyiX;
m_y2 += m_pingyiY;
m_x3 += m_pingyiX;
m_y3 += m_pingyiY;
*/
POINT p1,p2,p3;
CMatrix point1(m_x1,m_y1);
p1=(POINT)point1.Move(m_pingyiX,m_pingyiY);
CMatrix point2(m_x2,m_y2);
p2=point2.Move(m_pingyiX,m_pingyiY);
CMatrix point3(m_x3,m_y3);
p3=point3.Move(m_pingyiX,m_pingyiY);
CRect rect;
m_parent->GetClientRect(rect);
m_parent->ScreenToClient(rect);
SetMapMode((HDC)dc,MM_LOENGLISH);
SetViewportOrgEx((HDC)dc,512,360,NULL);
CPen pen(PS_SOLID,1,m_color);//设置画笔
CPen *pOldPen = dc.SelectObject(&pen);
/*
dc.MoveTo((int)m_x1,(int)m_y1);
dc.LineTo((int)m_x2,(int)m_y2);
dc.MoveTo((int)m_x2,(int)m_y2);
dc.LineTo((int)m_x3,(int)m_y3);
dc.MoveTo((int)m_x3,(int)m_y3);
dc.LineTo((int)m_x1,(int)m_y1);
*/
dc.MoveTo((int)p1.x,(int)p1.y);
dc.LineTo((int)p2.x,(int)p2.y);
dc.MoveTo((int)p2.x,(int)p2.y);
dc.LineTo((int)p3.x,(int)p3.y);
dc.MoveTo((int)p3.x,(int)p3.y);
dc.LineTo((int)p1.x,(int)p1.y);
dc.SelectObject(pOldPen);
}
void CShezhiDlg::OnXuanzhuan()
{
// TODO: Add your control notification handler code here
UpdateData(true);// 获取输入值
CClientDC dc(m_parent);//创建指向主窗口视图的CClientDC对象。
/*
旋转坐标变换
*/
POINT p1,p2,p3;
CMatrix point1(m_x1,m_y1);
p1=point1.Roat(m_xuanzhuanX,m_xuanzhuanY,m_jiaodu);
CMatrix point2(m_x2,m_y2);
p2=point2.Roat(m_xuanzhuanX,m_xuanzhuanY,m_jiaodu);
CMatrix point3(m_x3,m_y3);
p3=point3.Roat(m_xuanzhuanX,m_xuanzhuanY,m_jiaodu);
CRect rect;
m_parent->GetClientRect(rect);
m_parent->ScreenToClient(rect);
SetMapMode((HDC)dc,MM_LOENGLISH);
SetViewportOrgEx((HDC)dc,512,360,NULL);
CPen pen(PS_SOLID,1,m_color);//设置画笔
CPen *pOldPen = dc.SelectObject(&pen);
dc.MoveTo((int)p1.x,(int)p1.y);
dc.LineTo((int)p2.x,(int)p2.y);
dc.MoveTo((int)p2.x,(int)p2.y);
dc.LineTo((int)p3.x,(int)p3.y);
dc.MoveTo((int)p3.x,(int)p3.y);
dc.LineTo((int)p1.x,(int)p1.y);
dc.SelectObject(pOldPen);
}
void CShezhiDlg::OnOK()
{
// TODO: Add extra validation here
UpdateData(true);// 获取输入值
CClientDC dc(m_parent);//创建指向主窗口视图的CClientDC对象。
CRect rect;
m_parent->GetClientRect(rect);
m_parent->ScreenToClient(rect);
SetMapMode((HDC)dc,MM_LOENGLISH);
SetViewportOrgEx((HDC)dc,512,360,NULL);
CPen pen(PS_SOLID,1,m_color);//设置画笔
CPen *pOldPen = dc.SelectObject(&pen);
dc.MoveTo((int)m_x1,(int)m_y1);
dc.LineTo((int)m_x2,(int)m_y2);
dc.MoveTo((int)m_x2,(int)m_y2);
dc.LineTo((int)m_x3,(int)m_y3);
dc.MoveTo((int)m_x3,(int)m_y3);
dc.LineTo((int)m_x1,(int)m_y1);
dc.SelectObject(pOldPen);
//CDialog::OnOK();
}
void CShezhiDlg::OnCancel()
{
// TODO: Add extra cleanup here
CDialog::OnCancel();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -