1

我正在做一个项目,我有一个时间表,用户可以在其中单击一个月并在弹出窗口中查看该特定月份赢得的奖牌。现在,我想为程序安排奖牌图像(小视圈)。应该像这样排列,或者像这样(我并不特别关注一种特定的格式,但我只是希望它们是对称的):

  1. 1 枚奖牌 - 一个小圆圈
  2. 2 枚奖牌 - 并排的两个圆圈
  3. 3 枚奖牌 - 三个圆圈,两个并排,一个位于两枚奖牌的中上角
  4. 4 枚奖牌 - 四个圆形组成一个正方形
  5. 5 枚奖牌 - 四个圆圈在一个正方形中,第 5 个在中上。

我知道我可能不清楚我的要求,所以如果您需要更多说明,请提及。

我需要逻辑来为奖牌绘制这个或任何其他图案。我在objective-c工作以记录

4

1 回答 1

1

您可以执行以下操作:

int nrmedals; //number of medals
CGPoint bottompos; //position of the lower left corner of the rectangle where you want to draw
float padding; //space between medals
float diameter; //diameter of the medals
if (nrmedals%2==0) { //even
    for (int i=0; i<nrmedals; i+=2) {
        draw medal one at position (bottompos.x,bottompos.y+ i/2 * (diameter + padding));
        draw medal two at position (bottompos.x+diameter+padding ,bottompos.y + i/2 * (diameter + padding));

    }

}else {//odd
    for (int i=0; i<nrmedals-1; i+=2) {
        draw medal one at position (bottompos.x,bottompos.y+ i/2 * (diameter + padding));
        draw medal two at position (bottompos.x+diameter+padding ,bottompos.y + i/2 * (diameter + padding));

    }
draw odd medal at position (bottompos.x +diameter/2+padding/2 ,bottompos.y+diameter * (nrmedals-1)/2 +padding);
}

这是基本思想(当然你可以用一个变量替换“2”,而不是每行 2 个奖牌,你有更多)

一些计算点的数学可能会关闭

于 2012-12-07T18:17:17.780 回答