画像の上にフリーハンド描画を実装しようとしていますが、結果を画像として保存したくありません。この記事のコードを適用しましたが、何も描画されていません (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...
}
}