📄 luxdlg.cpp
字号:
// 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 + -