我正在尝试在图像上实现手绘,但我不想将结果保存为图像。我已经改编了这篇文章中的代码,但我没有看到任何绘图(尽管我知道正在调用 drawRect 方法)。我已经验证我正在遍历 for 循环中的有效 CGPoints。所以一切似乎都在一条线上,但实际上没有任何东西被绘制出来。
我错过了什么吗?
另外,请注意,我已经删除了形状绘制部分,但它正在工作(绘制椭圆、矩形和线条)。
这是代码:
- (void)drawRect:(CGRect)rect
{
if( self.shapeType == DrawShapeTypeCustom )
{
if( !self.myDrawings )
{
self.myDrawings = [[NSMutableArray alloc] initWithCapacity:0];
}
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGFloat red = 0.0, green = 0.0, blue = 0.0, alpha =0.0;
[[UIColor redColor] getRed:&red green:&green blue:&blue alpha:&alpha];
CGContextSetRGBFillColor( ctx , red , green , blue , 0.0 );
CGContextSetRGBStrokeColor( ctx , red , green , blue , 0.9 );
CGContextSetLineWidth( ctx , (CGFloat) 5 );
if( [self.myDrawings count] > 0 )
{
CGContextSetLineWidth(ctx , 5);
for( int i = 0 ; i < [self.myDrawings count] ; i++ )
{
NSArray * array = [self.myDrawings objectAtIndex:i];
if( [array count] > 2 )
{
CGFloat x = [[array objectAtIndex:0] floatValue];
CGFloat y = [[array objectAtIndex:1] floatValue];
CGContextBeginPath( ctx );
CGContextMoveToPoint( ctx , x, y);
for( int j = 2 ; j < [array count] ; j+= 2 )
{
x = [[array objectAtIndex:0] floatValue];
y = [[array objectAtIndex:1] floatValue];
CGContextAddLineToPoint( ctx , x , y );
}
}
CGContextStrokePath( ctx );
}
}
}
else
{
// Draw shapes...
}
}