1

我想在 iphone sdk 中像矩阵结构一样绘制点。

如果我想生成点列和行(如 2x2、3x3、4x4)。

但我不知道这一代人。

我想要如下图所示的输出。

在此处输入图像描述

例如代码或教程的任何帮助..!

4

2 回答 2

6

一个简单的解决方案是:

- (void)drawRect:(CGRect)rect {
  int n = 12;         // row and column count
  int padding = 5;    // distance beetween dots
  float radius = MIN((rect.size.width-(n+1)*padding)/(n*2), (rect.size.height-(n+1)*padding)/(n*2)); // radius depending on rect size

  CGContextRef context = UIGraphicsGetCurrentContext();
  CGContextSetFillColorWithColor(context, [[UIColor whiteColor] CGColor]); // background color
  CGContextFillRect(context, rect); // setting background color

  CGContextSetFillColorWithColor(context, [[UIColor blackColor] CGColor]); // dot color

  for (int y = 0; y<n; y++) {
    for (int x = 0; x<n; x++) {
      CGContextAddArc(context, padding+radius+(padding+radius*2)*x, padding+radius+(padding+radius*2)*y, radius, 0, M_PI*2, 0); // adding dot path
      CGContextFillPath(context); // drawing dot path
    }
  }
}
于 2012-04-28T06:20:58.923 回答
4

您使用此代码...

- (void)drawRect:(CGRect)rect 
{
CGContextRef contextRef = UIGraphicsGetCurrentContext();

CGContextSetRGBFillColor(contextRef, 0, 0, 255, 0.1);
//CGContextSetRGBFillColor(contextRef, 0, 10, 200, 0.2);

CGContextSetRGBStrokeColor(contextRef, 0, 0, 255, 0.5);

// Draw a circle (filled)
//CGContextFillEllipseInRect(contextRef, CGRectMake(100, 100, 25, 25));

// Draw a circle (border only)
CGContextStrokeEllipseInRect(contextRef, CGRectMake(100, 100, 25, 25));



// Get the graphics context and clear it
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextClearRect(ctx, rect);



// Draw a green solid circle
CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(20, 50, 8, 8));

CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(50, 50, 8, 8));

CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(80, 50, 8, 8));

CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(110, 50, 8, 8));

CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(140, 50, 8, 8));

CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(170, 50, 8, 8));



CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(20, 100, 8, 8));

CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(50, 100, 8, 8));

CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(80, 100, 8, 8));

CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(110, 100, 8, 8));

CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(140, 100, 8, 8));

CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(170, 100, 8, 8));


CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(20, 150, 8, 8));

CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(50, 150, 8, 8));

CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(80, 150, 8, 8));

CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(110, 150, 8, 8));

CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(140, 150, 8, 8));

CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(170, 150, 8, 8));


CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(20, 200, 8, 8));

CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(50, 200, 8, 8));

CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(80, 200, 8, 8));

CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(110, 200, 8, 8));

CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(140, 200, 8, 8));

CGContextSetRGBFillColor(ctx, 0, 255, 0, 1);
CGContextFillEllipseInRect(ctx, CGRectMake(170, 200, 8, 8));
}

您的输出显示如下 在此处输入图像描述

于 2012-04-28T06:10:20.613 回答