CPoint CDrawtestView::fun( CPoint ptCenter, int iRadius, int iInterval )
{
for(int i = 1; true; i++)
{
double iTempRadius = iRadius * i;//y de cha ju
double origin_x = ptCenter.x - MAX_LENGTH/2;
double iTempInterval =(double)MAX_LENGTH/(double)(iInterval-1);
CPoint TempPoint;
for( double j = 0; j<=MAX_LENGTH;j+=iTempInterval)
{
TempPoint.x = origin_x + j+0.5;
TempPoint.y = ptCenter.y + iTempRadius+0.5;
vector<CRect* >::iterator it = m_vcRect.begin();
for(;it!=m_vcRect.end();++it)
{
if( (*it)->PtInRect(TempPoint))
break;
}
if( it == m_vcRect.end())
return TempPoint;
}
}
return ptCenter;
}
///
void CDrawtestView::OnDraw(CDC* pDC)
{
CDrawtestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CPoint pt = CPoint(200,200);
CRect rect;
rect.left =pt.x-20;
rect.right=pt.x + 20;
rect.top = pt.y -20;
rect.bottom=pt.y+20;
pDC->Rectangle(rect);
for( int i = 0;i<15;i++)
{
CPoint TempPt = fun(pt,60,5);
CRect* TempRect = new CRect(TempPt.x-5,TempPt.y-5,TempPt.x+5,TempPt.y+5);
m_vcRect.push_back(TempRect);
}
for( vector<CRect*>::iterator it = m_vcRect.begin();it!=m_vcRect.end();++it)
{
pDC->Rectangle(**it);
CPoint TestPt = (*it)->CenterPoint();
}
}
fun( CPoint ptCenter, int iRadius, int iInterval )
iRadius 用来控制上下的间距
iInterval用来控制左右小方块之间的间距