1

ビットマップ グラフィック コンテキストとベジェ パスを使用して線を画像に変換する単純なグラフィック エディターを iOS で作成したいと考えています。

消しゴムを作成する方法が見つかりませんでした。

あなたはなにか考えはありますか?

- (void)drawRect:(CGRect)rect {
    [[UIColor blackColor] setStroke];

    CGContextRef aRef = UIGraphicsGetCurrentContext();

    aPath.lineWidth = 5;
    [aPath stroke];
    [[[UIColor blackColor] colorWithAlphaComponent:0] setStroke];
    bPath.lineWidth = 5;
    [bPath stroke];
   movesss= CGBitmapContextCreateImage(aRef);
    if (movesss==NULL) {
        NSLog(@"null =(");
    }
}

-(void)moveTo:(CGPoint)pos {
    if(del){
        [bPath moveToPoint:pos];
    }
    else{
        [aPath moveToPoint:pos];
    }
}

-(void)cret{
    aPath=[[UIBezierPath bezierPath] retain];
    bPath=[[UIBezierPath bezierPath] retain];
    del=NO;
}

-(void)lineTo:(CGPoint)pos {
    if(del){
        [bPath addLineToPoint:pos];
    }
    else{
        [aPath addLineToPoint:pos];
    }
    [self setNeedsDisplay];
}

-(void)imgf{
    UIImage *imageToSave=[[UIImage imageWithCGImage:movesss] retain];

   UIImageWriteToSavedPhotosAlbum(imageToSave, nil, nil, nil);
    UIImageView *trew=[[UIImageView alloc] initWithFrame:[self frame]];
    [trew setBackgroundColor:[UIColor greenColor]];
    [trew setImage:imageToSave];
    [self addSubview:trew];
}

-(void)swittch{
    del=!del;
}


ここで何が問題なのですか?

4

2 に答える 2

1

背景色でペイントすると、消しゴムとして機能します。

于 2012-08-25T06:18:10.787 に答える
1

完全に透明な色 (アルファをゼロに設定) でペイントするペンとして消しゴムを実装できます。UIColorには、作成時に colorWithAlphaComponent を使用して設定できる「アルファ」パラメータがあります。

または単に使用するUIColor * color = [UIColor clearColor];

編集:

clearColor でペイントすると、ピクセルがクリア ピクセルに置き換えられると思いました。その場合、アルファ化された色で何度もペイントすると正しく機能しないため、それはばかげた推論でした。

この質問によると、透明色はその目的には機能しません。背景色を知り、それを使ってペイントする必要があります。背景色が「透明」だと… 困ります。

于 2011-09-07T07:31:13.743 に答える