2012-04-28 21 views
1

我想在iphone sdk中绘制像矩阵结构的点。在iphone上绘制像矩阵结构的点sdk

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

但我不知道这一代。

我想输出像下面的图像。

enter image description here

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

+0

在CG,点很简单,但虚线很贵。你试图完成哪一个。 – CodaFi 2012-04-28 05:58:18

+0

如果你能更详细地阐述这一点会更好。为了简单起见,您只需使用数组就可以实现此目的。 – Tarun 2012-04-28 06:00:20

回答

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)); 
} 

你的输出显示像 enter image description here

+0

+ 1,感谢您的代码...! – Dinesh 2012-04-28 06:12:46

+2

如果你喜欢这个代码,接受这个并增加你的积分。 – akk 2012-04-28 06:24:53

+0

硬编码值?我喜欢它,+1! – JustSid 2012-04-28 06:29:46

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 
    } 
    } 
} 
+0

如何调用此方法..! – Dinesh 2012-04-28 06:30:47

+0

您简单的必须执行的UIView的子类,覆盖这个实现drawRect方法。 – 2012-04-28 06:37:40

+0

我打电话给这个方法显示错误:[self drawRect:my_uiview]; – Dinesh 2012-04-28 06:42:28