⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setdrawparadialog.cpp

📁 自己编的用于ENVI
💻 CPP
字号:
// SetDrawParaDialog.cpp : implementation file
//

#include "stdafx.h"
#include "MagneticPro.h"
#include "SetDrawParaDialog.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSetDrawParaDialog dialog


CSetDrawParaDialog::CSetDrawParaDialog(CWnd* pParent /*=NULL*/)
	: CDialog(CSetDrawParaDialog::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSetDrawParaDialog)
	m_Xstart = 50;
	m_Xscale = 1.0;
	m_Ydivide = 20;
	m_yN = 5;
	m_Yscale = 1.0;
	m_Ystart = 550;
	m_xN = 5;
	m_Xdivide = 20;
	m_Title = _T("The Curverof the Array");
	//}}AFX_DATA_INIT
    Xmax=Xmid=Xmin=Ymax=Ymin=Ymid=0.0;
}


void CSetDrawParaDialog::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSetDrawParaDialog)
	DDX_Text(pDX, IDC_Xsart, m_Xstart);
	DDX_Text(pDX, IDC_Xscale, m_Xscale);
	DDX_Text(pDX, IDC_Ydivide, m_Ydivide);
	DDX_Text(pDX, IDC_yN, m_yN);
	DDX_Text(pDX, IDC_Yscale, m_Yscale);
	DDX_Text(pDX, IDC_Ystart, m_Ystart);
	DDX_Text(pDX, IDC_xN, m_xN);
	DDX_Text(pDX, IDC_Xdivide, m_Xdivide);
	DDX_Text(pDX, IDC_Title, m_Title);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSetDrawParaDialog, CDialog)
	//{{AFX_MSG_MAP(CSetDrawParaDialog)
	ON_BN_CLICKED(IDC_DrawCurver, OnDrawCurver)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSetDrawParaDialog message handlers

bool CSetDrawParaDialog::DrawGhapher(double xArray[],int xNum,double yArray[],int yNum)
{
    int Xstart,Ystart,Xdivide,Ydivide,xN,yN;
	double Xscale,Yscale;
	CString tTemp;
  ////////////////////////////////////////////////////////////////////////////////////
    //UpdateData(TRUE);
    Xstart=m_Xstart;
	Ystart=m_Ystart;                      //////////
	Xdivide=m_Xdivide;                    //////////  /获得各项绘图参数
	Ydivide=m_Ydivide;                    //////////
	xN=m_xN;
	yN=m_yN;
	Xscale=m_Xscale;
	Yscale=m_Yscale;
	
    ///////////////////////////////////////////////////////////////////////////////////////
    CDC *pDC=GetDC();
	////////////////////////////////////////////////////////////////////////////////////
    //////////            绘制X-轴                                      ///////////////
	////////////////////////////////////////////////////////////////////////////////////
	GetMaxMinMid(xArray, xNum);
     Xmax=Ximax;
	 Xmin=Ximin;
	 Xmid=Ximid;
     pDC->MoveTo(Xstart,Ystart);
     pDC->LineTo((int)(Xstart+Xscale*(Xmax-Xmin)),Ystart);
    for(int i=0;i<xNum;i++)
	{
	  pDC->MoveTo(Xstart+(int)(i*Xscale*(Xmax-Xmin)/Xdivide),Ystart);
      pDC->LineTo(Xstart+(int)(i*Xscale*(Xmax-Xmin)/Xdivide),Ystart-5);      
	}
	////////////////////////////////////////////////////////////////////////////////////
	for(int i=0;i<=xNum;i=i+xN)
	{
		//pDC->MoveTo();
        tTemp.Format("%5.1f",Xmin+i*(Xmax-Xmin)/Xdivide);
		pDC->TextOut(Xstart+(int)(i*Xscale*(Xmax-Xmin)/Xdivide),Ystart+10,tTemp);
	}
    ///////////////////   绘制Y轴                                   ///////////////////
    /////////////////////////////////////////////////////////////////////////////////////
    GetMaxMinMid(yArray, yNum);
     Ymax=Ximax;
	 Ymin=Ximin;
	 Ymid=Ximid;
     pDC->MoveTo(Xstart,Ystart);
     pDC->LineTo(Xstart,Ystart-(int)(Yscale*(Ymax-Ymin)));
    for(int i=0;i<yNum;i++)
	{
	  pDC->MoveTo(Xstart,(int)(i*Yscale*(Ymax-Ymin)/Ydivide)+Ystart);
      pDC->LineTo(Xstart-10,(int)(i*Yscale*(Ymax-Ymin)/Ydivide)+Ystart);      
	}
    ////////////////////////////////////////////////////////////////////////////////////
    	for(int i=0;i<=yNum;i=i+yN)
	{
		//pDC->MoveTo();
        tTemp.Format("%5.1f",Ymin+i*(Ymax-Ymin)/Ydivide);
		pDC->TextOut(Xstart,Ystart-(int)(i*Yscale*(Ymax-Ymin)/Ydivide),tTemp);
	}
	/////////////////////////////////////////////////////////////////////////////////
    ////                        绘制曲线                             ////
	/////////////////////////////////////////////////////////////////////////////////
    
		pDC->MoveTo(Xstart,Ystart-(int)((yArray[0]-Ymin)*Yscale*Ydivide/(Ymax-Ymin)));
	for(int i=1;i<xNum,i<yNum;i++)
	{
		pDC->LineTo(Xstart+(int)((xArray[i]-Xmin)*Xscale*Xdivide/(Xmax-Xmin)),
			Ystart-(int)((yArray[i]-Ymin)*Yscale*Ydivide/(Ymax-Ymin)));

    }
  //////////////////////////////////////////////////////////////////////////////////
	::AfxMessageBox("Draw finish!");

  return true;
}

bool CSetDrawParaDialog::GetMaxMinMid(double fArray[], int fN)
{
    Xmax=Xmin=fArray[0];
	for(int i=0;i<fN;i++)
	{
		if(fArray[i]>Xmax)
			Ximax=fArray[i];
		if(fArray[i]<Xmin)
			Ximin=fArray[i];
	}
	Ximid=(Ximax+Ximin)/2.0;
	return true;
}

void CSetDrawParaDialog::OnDrawCurver() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	CDialog::OnOK();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -