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

📄 dragon.cpp

📁 分形图 龙
💻 CPP
字号:
// Dragon.cpp: implementation of the CDragon class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Dragon.h"
#include "math.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CDragon::CDragon()
{
	
}

CDragon::~CDragon()
{
	m_pDC=NULL;
}

//构造函数 传入CDC的指针
CDragon::CDragon(CDC* pDC)
{
	m_pDC=pDC;
}

void CDragon::Draw()
{	
	int i;
	CString s_str;
	Step=STEP;
	Sign=1;
	m_pDC->GetWindow()->RedrawWindow();	
	//获得窗口的长宽大小
	GetMaxX();
	GetMaxY();
	XAxis[1]=MaxX/4;
	XAxis[STEP+1]=3*MaxX/4;
	YAxis[1]=2*MaxY/3;
	YAxis[STEP+1]=YAxis[1];
	SetColor(4);
	m_pDC->TextOut(100,20,"step 0");
	Line(XAxis[1],YAxis[1],XAxis[STEP+1],YAxis[STEP+1]);
	sleep(1);
	
	for (i=1;i<=(int)(log(STEP)/log(2)+0.5);++i)
	{
		m_pDC->GetWindow()->RedrawWindow();
		DDragon(i);
		s_str.Format("%s%d","step ",i);
		m_pDC->TextOut(100,20,s_str);
		Step=Step/2;
		//暂停
		sleep(400);
	}
	m_pDC->SelectObject(m_pOldPen);
	m_pDC->TextOut(30,20,"龙图");
}

void CDragon::DDragon(int nColor)
{
	int   i, j, dx, dy;
	j = Step / 2;
	if (nColor<=12)
		SetColor(nColor);
	else
		SetColor(1);
	i = 1;
    do 
    {
		dx = XAxis[Step+i] - XAxis[i];
        dy = YAxis[Step+i] - YAxis[i];
        Sign = Sign * -1;
        XAxis[i+j] = XAxis[i] + ( dx + ( dy * Sign )) / 2;
        YAxis[i+j] = YAxis[i] + ( dy - ( dx * Sign )) / 2;
		if ( nColor!= 0 )
	    {
			Line(XAxis[i], YAxis[i]-100, XAxis[i+j], YAxis[i+j]-100);
			Line(XAxis[i+j], YAxis[i+j]-100, XAxis[i+Step], YAxis[i+Step]-100);
		}
	    i = i + Step;
	}
	while ( i <= STEP );
}

⌨️ 快捷键说明

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