1

私は次のようにしようとしています:私は画像を含む1つのimageViewを持っており、明るいテキスト色の背景を持つ同じ寸法の別の画像ビューを追加します。そして、消去するには上の画像の部分をクリア/消去する必要があります。その部分から、下の画像が鮮明になります。添付した画像ここに画像の説明を入力 そして、画面上でタッチを動かすと、その部分がはっきりしているはずです。助けてください

4

1 に答える 1

0

1 つの Scratch ビュー クラスを作成し、Scratchtransparentイメージを次のinitMethodように配置します。

- (id)initWithFrame:(CGRect)frame {

    self = [super initWithFrame:frame];
    if (self) {
        scratchable = [UIImage imageNamed:@"scratchable.jpg"].CGImage;
        width = CGImageGetWidth(scratchable);
        height = CGImageGetHeight(scratchable);
        self.opaque = NO;
        CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceGray();

        CFMutableDataRef pixels = CFDataCreateMutable( NULL , width * height );
        alphaPixels = CGBitmapContextCreate( CFDataGetMutableBytePtr( pixels ) , width , height , 8 , width , colorspace , kCGImageAlphaNone );
        provider = CGDataProviderCreateWithCFData(pixels);


        CGContextSetFillColorWithColor(alphaPixels, [UIColor blackColor].CGColor);
        CGContextFillRect(alphaPixels, frame);

        CGContextSetStrokeColorWithColor(alphaPixels, [UIColor whiteColor].CGColor);
        CGContextSetLineWidth(alphaPixels, 20.0);
        CGContextSetLineCap(alphaPixels, kCGLineCapRound);

        CGImageRef mask = CGImageMaskCreate(width, height, 8, 8, width, provider, nil, NO);
        scratched = CGImageCreateWithMask(scratchable, mask);

        CGImageRelease(mask);
        CGColorSpaceRelease(colorspace);
    }
    return self;
}

また、Scratch 後に背景の画像を表示するための 2 つ目のビュー クラスを作成します。

以下の例は、これを試すのに非常に役立ちます:-

https://github.com/oyiptong/CGScratch

ここに画像の説明を入力

于 2013-08-29T07:52:21.767 に答える