¿¹Á¦ ÇÁ·¢Å»
´ÙÀ½Àº Àç±ÍÈ£ÃâÀ» ÀÌ¿ëÇÑ °£´ÜÇÑ ¸Àº¸±âÀÔ´Ï´Ù. ¸î ÁÙ µÇÁö ¾ÊÁö¸¸ °á°ú´Â ¿¹ÃøºÒÇãÁÒ. ±×·³ °á°úºÎÅÍ »ìÆìº¸±â·Î ÇÒ±î¿ä.

°£´ÜÇÑ ±×¸²À̱ä ÇÏÁö¸¸ ÀÌ°Ç ¸Àº¸±â´Ï±î¿ä. ´ÙÀ½Àº ÄÚµùºÎºÐÀÔ´Ï´Ù.
OnDraw() ÇÔ¼ö¸¦ ´ÙÀ½°ú °°ÀÌ °íÄ¡°í, ºä¿¡ ¸â¹öÇÔ¼ö·Î f_won() °ú circle() À̶õ ÇÔ¼ö¸¦ Ãß°¡ÇÕ´Ï´Ù. ±×¸®°í´Â ½ÇÇàÇÕ´Ï´Ù. ±×·³ À§¿Í °°Àº ±×¸²À» º¼ ¼ö ÀÖÁÒ.
¿©±â¼ ÇѰ¡Áö »ý°¢ÇØ¾ß ÇÒ °Ô Àִµ¥¿ä. ¹Ù·Î Ellipse() ÇÔ¼ö¿Í Arc() ÇÔ¼öÀÇ Â÷ÀÌÁ¡ÀÔ´Ï´Ù. ¹«½¼ Â÷ÀÌÀÎÁö ´«À¸·Î È®ÀÎÇÏ·Á¸é ¿ì¼± ¹ØÀÇ circle()ÇÔ¼ö¿¡¼ ÁÖ¼®Ã³¸®ÇÑ Ellipse()ÇÔ¼öºÎºÐÀÇ ÁÖ¼®À» ¾ø¾Ö°í, Arc() ÇÔ¼öºÎºÐÀ» ÁÖ¼®Ã³¸®ÇÑ ´ÙÀ½ ½ÇÇàÇØ º¸¼¼¿ä. ±×·³ ´«¿¡ È® ¶î°Ì´Ï´Ù. ¹Ù·Î ±×¸®´Â ¿øÀÇ ¼ÓÀ» ä¿ì´À³ª ¾Æ´Ï³ÄÀÇ Â÷ÀÌÀÔ´Ï´Ù.
»ç½Ç Ellipse()ÇÔ¼ö´Â Ÿ¿øÀ» ±×¸®´Â ÇÔ¼öÀ̰í, Arc() ÇÔ¼ö´Â È£¸¦ ±×¸®´Â ÇÔ¼öÀÔ´Ï´Ù. ¾Æ½±°Ôµµ Åͺ¸C¿¡ ÀÖ´Â Circle()À̶ó´Â ÇÔ¼ö´Â ºñÁÖ¾ó C++¿¡¼± ¾øÀ¸´Ï Á÷Á¢ ¸¸µé¾î ¾²¸é µË´Ï´Ù. Çʿ信 µû¶ó ¼ÓÀÌ Âù ¿øÀ» ±×¸®·Á¸é Ellipse() ÇÔ¼ö¸¦ ¾²°í, ¼ÓÀ» ä¿ìÁö ¾ÊÀº ¿øÀ» ±×¸®·Á¸é Arc()ÇÔ¼ö¿¡¼ ½ÃÀÛÁ¡°ú ³¡Á¡ÀÇ ÁÂÇ¥¸¦ °°°Ô ³õÀ¸¸é µË´Ï´Ù.
void CFractal1View::OnDraw(CDC* pDC)
{
CFractal1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native
data here
int x, y, r;
r=x=y=200; //
Àüü Å©±â ¼³Á¤
f_won(x, y, r, pDC);
}
void CFractal1View::f_won(int x, int y, int r, CDC *pDC)
{
if(r>1) {
circle(x,
y, r, pDC);
f_won(x-r/2,
y, r/2, pDC);
f_won(x+r/2,
y, r/2, pDC);
}
}
void CFractal1View::circle(int x, int y, int r, CDC *pDC)
{
//pDC->Ellipse(x-r, y-r,
x+r, y+r);
pDC->Arc(x-r, y-r, x+r, y+r,
x-r, y-r, x-r, y-r);
}
- f_won() ÇÔ¼öÀÇ º¯Çü
f_won()ÇÔ¼ö¸¦ Á¶±Ý º¯ÇüÇϸé ÀüÇô »õ·Î¿î ¸ð¾çÀÇ ÇÁ·¢Å»ÀÌ »ý¼ºµË´Ï´Ù.
void CFractal1View::f_won(int x, int y, int r, CDC *pDC)
{
if(r>8) {
circle(x,
y, r, pDC);
f_won(x-r/2,
y, r/2, pDC);
f_won(x+r/2,
y, r/2, pDC);
f_won(x,
y-r/2, r/2, pDC);
f_won(x,
y+r/2, r/2, pDC);
}
}

---------------------------------------------------------
void CFractal1View::f_won(int x, int y, int r, CDC *pDC)
{
if(r>8) {
circle(x,
y, r/2, pDC);
f_won(x-r/2,
y, r/2, pDC);
f_won(x+r/2,
y, r/2, pDC);
f_won(x,
y-r/2, r/2, pDC);
f_won(x,
y+r/2, r/2, pDC);
}
}

----------------------------------------------------
void CFractal1View::f_won(int x, int y, int r, CDC *pDC)
{
if(r>1) {
circle(x,
y, r, pDC);
f_won(x-r/2,
y, r*0.4, pDC);
f_won(x+r/2,
y, r*0.4, pDC);
f_won(x,
y-r/2, r*0.4, pDC);
f_won(x,
y+r/2, r*0.4, pDC);
}
}

---------------------------------------------------
OnDraw() ´Â À§ÀÇ ¿¹Á¦ ±×´ë·Î ¾²°í, f_won()À» Á¶±Ý °íÄ¡°í, circle() ´ë½Å FillEllipse()¸¦ ¸â¹öÇÔ¼ö·Î Ãß°¡ÇÕ´Ï´Ù. »ö±òÀÌ µé¾î°£ ù ¿¹Á¦ÀÔ´Ï´Ù.
void CFractal1View::f_won(int x, int y, int r, CDC *pDC)
{
int red, green, blue;
if(r>8) {
red
= rand() % 255; // Ä÷¯¸¦ ·£´ýÇÏ°Ô ¼³Á¤
green
= rand() % 255;
blue
= rand() % 255;
CBrush
brush, *pOldBrush;
brush.CreateSolidBrush(RGB(red,
green, blue)); // ºê·¯½Ã »ý¼º
pOldBrush=(CBrush
*)pDC->SelectObject(&brush); // DC¿¡ ºê·¯½Ã ¼±ÅÃ
FillEllipse(x,
y, r/2, r/3, pDC);
f_won(x-r/2,
y, r/2, pDC);
f_won(x+r/2,
y, r/2, pDC);
f_won(x,
y-r/2, r/2, pDC);
f_won(x,
y+r/2, r/2, pDC);
pDC->SelectObject(pOldBrush);
// DC º¹¿ø
}
}
void CFractal1View::FillEllipse(int x, int y, int xradius, int yradius,
CDC *pDC)
{
pDC->Ellipse(x, y, x+xradius*2,
y+yradius*2);
}
