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

📄 luxdlg.cpp

📁 本程序是一个伽玛相机的线性测试校正演示程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// LUXDlg.cpp : implementation file
//

#include "stdafx.h"
#include "LUX.h"
#include "LUXDlg.h"
#include "memory.h"
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <math.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLUXDlg dialog

CLUXDlg::CLUXDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CLUXDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CLUXDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CLUXDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CLUXDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CLUXDlg, CDialog)
	//{{AFX_MSG_MAP(CLUXDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
	ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLUXDlg message handlers

BOOL CLUXDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here
    GetDlgItem(IDC_BUTTON2)->EnableWindow(FALSE);
    GetDlgItem(IDC_BUTTON3)->EnableWindow(FALSE);
	CRect rect1;
    GetDlgItem(IDC_STATIC1)->GetClientRect(rect1);
	
	rect1.left=rect1.left+4;rect1.right=rect1.left+256;
	rect1.top=rect1.top+4;
	rect1.bottom=rect1.top+256;
    GetDlgItem(IDC_STATIC1)->MoveWindow(rect1,true);
m_pImageShowData=(BYTE*)malloc(256*256);
    	m_pBitmapInfo = (PBITMAPINFO)malloc( sizeof( BITMAPINFOHEADER )+sizeof( RGBQUAD )*256);
	m_pBitmapInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
	m_pBitmapInfo->bmiHeader.biWidth = 256;    //
	m_pBitmapInfo->bmiHeader.biHeight = 256;
	m_pBitmapInfo->bmiHeader.biPlanes = 1L;
	m_pBitmapInfo->bmiHeader.biBitCount = 8L;
	m_pBitmapInfo->bmiHeader.biCompression = 0L;
	m_pBitmapInfo->bmiHeader.biSizeImage = (long)256*256;
	m_pBitmapInfo->bmiHeader.biXPelsPerMeter = 0xbc;
	m_pBitmapInfo->bmiHeader.biYPelsPerMeter = 0xbc;
	m_pBitmapInfo->bmiHeader.biClrUsed = 0;
	m_pBitmapInfo->bmiHeader.biClrImportant = 0;
for(int y=0;y<256;y++)
	{
        m_pBitmapInfo->bmiColors[y].rgbBlue=y;
        m_pBitmapInfo->bmiColors[y].rgbGreen=y;
        m_pBitmapInfo->bmiColors[y].rgbRed=y;
        m_pBitmapInfo->bmiColors[y].rgbReserved=0;
	}
for(int i=0;i<=255;i++)
{
for(int j=0;j<=255;j++)
{
*(m_pImageShowData+256*i+j)=0;
}
}
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CLUXDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CLUXDlg::OnPaint() 
{CPaintDC dc(this);
	 HBITMAP hBitmap ;	
	HDC hMemDC;   
	HBITMAP hBitmapOld;
    hBitmap = CreateDIBitmap(dc.m_hDC, (BITMAPINFOHEADER FAR *)&(m_pBitmapInfo->bmiHeader),CBM_INIT,m_pImageShowData,(LPBITMAPINFO)m_pBitmapInfo,DIB_RGB_COLORS );	
     	hMemDC = CreateCompatibleDC( dc.m_hDC );   
     	hBitmapOld = (HBITMAP)SelectObject( hMemDC, hBitmap );
CRect rect;
        GetDlgItem(IDC_STATIC1)->GetWindowRect(rect);
        ScreenToClient(rect);
       
		StretchBlt(dc.m_hDC,rect.left,rect.top, rect.Width(),rect.Height(),hMemDC,0,0,256,256,SRCCOPY);
		hBitmap = (HBITMAP)SelectObject( hMemDC, hBitmapOld );                                                                        	
	     DeleteObject( hBitmap );                                                                                                   	
	     DeleteDC( hMemDC ); 
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CLUXDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CLUXDlg::OnOK() 
{
	// TODO: Add extra validation here
	//double* ridus=ReturnFloat();
//	double* poly=ReturnFloat();
	GetDlgItem(IDC_BUTTON2)->EnableWindow(FALSE);
    GetDlgItem(IDC_BUTTON3)->EnableWindow(FALSE);
	int max=0;
    int i,x1,y1;
	int *TEMP= new int [2048*2048];//[65536]
	int TEMP1[65536];
	float temp,tx,ty,z=0;
	float x,y,lx,xa,xp,ya,yp;
	for(i=0;i<=2048*2048-1;i++)
	{
     
       *(TEMP+i)=0;
	 
	}
for(i=0;i<=65535;i++)
	{
     
       *(TEMP1+i)=0;
	 
	}
    for(int j=0;j<4*4*4*2;j++)
	{
	srand( (unsigned)time( NULL ) ); 
    for( i = 0;   i <1000000;i++ )
	{
        
		*(TEMP+(rand()%(2*128*128-1))+2*128*128*j)=*(TEMP+(rand()%(2*128*128-1))+2*128*128*j)+1;
        
    }
	}
   for(i=0;i<2048;i++)
   {
	   for(int t1=0;t1<2048;t1++)
	   {
		   if(((127-(t1/8))%30)!=0)
		   {
			   *(TEMP+t1+2048*i)=0;
		   }
	   }
   }
   for(i=0;i<2048*2048;i++)
	{
        x=(i%2048+0.0)/2047*450;y=(i/2048+0.0)*450/2047;
	   if(((x-225)*(x-225)+(y-225)*(y-225))<=(180*180))
		{
	      xa=0;ya=0;xp=0;yp=0;z=0;
        lx=0;
	  for(int j2=1;j2<62;j2++)
	  {
		  
		  
		  switch(j2)
		  {
		  case 1:
			  lx=1/(((x-225)+100)*((x-225)+100)+((y-225)+4*43.30127)*((y-225)+4*43.30127)+0.9525*0.9525*100);
			  
			  xp=xp+lx*3.16;yp=yp+lx*13.33;ya=ya+lx*2.21;xa=xa+lx*8.0;break;
		  case 2:
              lx=1/(((x-225)+50)*((x-225)+50)+((y-225)+4*43.30127)*((y-225)+4*43.30127)+0.9525*0.9525*100);
			  xp=xp+lx*3.636;xa=xa+lx*5.714;ya=ya+lx*2.105;yp=yp+lx*13.33;break;
		  case 3:
              lx=1/(((x-225)+0)*((x-225)+0)+((y-225)+4*43.30127)*((y-225)+4*43.30127)+0.9525*0.9525*100);
			  xp=xp+lx*4.444;xa=xa+lx*4.444;ya=ya+lx*2.105;yp=yp+lx*15.4;break;
		  case 4:
              lx=1/(((x-225)-50)*((x-225)-50)+((y-225)+4*43.30127)*((y-225)+4*43.30127)+0.9525*0.9525*100);
			  xp=xp+lx*5.714;xa=xa+lx*3.636;yp=yp+lx*13.33;ya=ya+lx*2.105;break;
		  case 5 :
              lx=1/(((x-225)-100)*((x-225)-100)+((y-225)+4*43.30127)*((y-225)+4*43.30127)+0.9525*0.9525*100);
			  xp=xp+lx*8.0;xa=xa+lx*3.16;ya=ya+lx*2.21;yp=yp+lx*13.33;break;
		  case 6:
			  lx=1/(((x-225)+125)*((x-225)+125)+((y-225)+3*43.30127)*((y-225)+3*43.30127)+0.9525*0.9525*100);
			  xp=xp+lx*2.857;xa=xa+lx*10.0;yp=yp+lx*13.33;ya=ya+lx*2.667;break;
		  case 7: 
              lx=1/(((x-225)+75)*((x-225)+75)+((y-225)+3*43.30127)*((y-225)+3*43.30127)+0.9525*0.9525*100);
			  xp=xp+lx*3.333;xa=xa+lx*6.667;ya=ya+lx*2.667;yp=yp+lx*13.33;break;
		  case 8:
               lx=1/(((x-225)+25)*((x-225)+25)+((y-225)+3*43.30127)*((y-225)+3*43.30127)+0.9525*0.9525*100);
			  xp=xp+lx*4.0;xa=xa+lx*5.00;ya=ya+lx*2.667;yp=yp+lx*13.33;break;
		  case 9:
             lx=1/(((x-225)-25)*((x-225)-25)+((y-225)+3*43.30127)*((y-225)+3*43.30127)+0.9525*0.9525*100);
			  xp=xp+lx*5.0;xa=xa+lx*4.00;ya=ya+lx*2.667;yp=yp+lx*13.33;break;
		  case 10:
               lx=1/(((x-225)-75)*((x-225)-75)+((y-225)+3*43.30127)*((y-225)+3*43.30127)+0.9525*0.9525*100);
			   xp=xp+lx*6.667;xa=xa+lx*3.333;ya=ya+lx*2.667;yp=yp+lx*13.33;break;
		  case 11:
             lx=1/(((x-225)-125)*((x-225)-125)+((y-225)+3*43.30127)*((y-225)+3*43.30127)+0.9525*0.9525*100);
			  xp=xp+lx*10.0;xa=xa+lx*2.857;ya=ya+lx*2.667;yp=yp+lx*13.33;break;
		  case 12:
			   lx=1/(((x-225)+150)*((x-225)+150)+((y-225)+2*43.30127)*((y-225)+2*43.30127)+0.9525*0.9525*100);
			  ya=ya+lx*3.01;yp=yp+lx*8.0;xp=xp+lx*2.61;xa=xa+lx*13.33;break;
		  case 13:
              lx=1/(((x-225)+100)*((x-225)+100)+((y-225)+2*43.30127)*((y-225)+2*43.30127)+0.9525*0.9525*100);
			  ya=ya+lx*3.077;yp=yp+lx*8.0;xp=xp+lx*3.077;xa=xa+lx*8.0;break;
		  case 14:
            lx=1/(((x-225)+50)*((x-225)+50)+((y-225)+2*43.30127)*((y-225)+2*43.30127)+0.9525*0.9525*100);
			  ya=ya+lx*3.077;yp=yp+lx*8.0;xp=xp+lx*3.636;xa=xa+lx*5.714;break;
		  case 15:
              lx=1/(((x-225)+0)*((x-225)+0)+((y-225)+2*43.30127)*((y-225)+2*43.30127)+0.9525*0.9525*100);
			  ya=ya+lx*3.077;yp=yp+lx*8.0;xa=xa+lx*4.444;xp=xp+lx*4.444;break;
		  case 16:
               lx=1/(((x-225)-50)*((x-225)-50)+((y-225)+2*43.30127)*((y-225)+2*43.30127)+0.9525*0.9525*100);
			  ya=ya+lx*3.077;yp=yp+lx*8.0;xa=xa+lx*3.636;xp=xp+lx*5.714;break;
		  case 17:
        lx=1/(((x-225)-100)*((x-225)-100)+((y-225)+2*43.30127)*((y-225)+2*43.30127)+0.9525*0.9525*100);
			  ya=ya+lx*3.077;yp=yp+lx*8.0;xa=xa+lx*3.077;xp=xp+lx*8.0;break;
		  case 18:
              lx=1/(((x-225)-150)*((x-225)-150)+((y-225)+2*43.30127)*((y-225)+2*43.30127)+0.9525*0.9525*100);
			  ya=ya+lx*3.01;yp=yp+lx*8.0;xp=xp+lx*13.33;xa=xa+lx*2.61;break;
		  case 19:
          lx=1/(((x-225)+175)*((x-225)+175)+((y-225)+1*43.30127)*((y-225)+1*43.30127)+0.9525*0.9525*100);
			  yp=yp+lx*5.714;ya=ya+lx*3.636;xp=xp+lx*2.353;xa=xa+lx*13.33;break;
		  case 20:
             lx=1/(((x-225)+125)*((x-225)+125)+((y-225)+1*43.30127)*((y-225)+1*43.30127)+0.9525*0.9525*100);
			  yp=yp+lx*5.714;ya=ya+lx*3.636;xp=xp+lx*2.857;xa=xa+lx*10.0;break;

⌨️ 快捷键说明

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