0

同じ画像の領域にアルファ プロパティを追加することは可能ですか? 例えば

アルファなしの正方形

アルファ付きの正方形

4

1 に答える 1

1

最も簡単な解決策は、画像を分割し、アルファを png の一部として保存してから、画像ビューを互いにフラッシュするように整理することです。

それ以外の場合は、画像で同じことを行う通常のビューでこの簡単なコードを書きました (私は Core Graphics に比較的慣れていないので、これを行うより良い方法があると確信しています - また、私の例では画像が並んでいます) ):

-(void) drawRect {

    // GET THE CONTEXT, THEN FLIP THE COORDS (my view is 189 ponts tall)

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGAffineTransform flip = CGAffineTransformMake(1, 0, 0, -1, 0, 189);
    CGContextConcatCTM(context, flip);

    // GET THE IMAGE REF

    UIImage *targetImage = [UIImage imageNamed:@"test.jpg"];
    CGImageRef imageRef = targetImage.CGImage;

    // SET THE COORDS

    CGRect imageCoords = CGRectMake(0, 0, 116, 189);
    CGRect imageCoordsTwo = CGRectMake(116, 0, 117, 189);

    // CUT UP THE IMAGE INTO TWO IMAGES

    CGImageRef firstImage = CGImageCreateWithImageInRect(imageRef, imageCoords);
    CGImageRef secondImage = CGImageCreateWithImageInRect(imageRef, imageCoordsTwo);

    // DRAW FIRST IMAGE, SAVE THE STATE, THEN SET THE TRANSPARENCY AMOUNT

    CGContextDrawImage(context, imageCoords, firstImage);
    CGContextSaveGState(context);
    CGContextSetAlpha(context, .4f);

    // DRAW SECOND IMAGE, RESTORE THE STATE

    CGContextDrawImage(context, imageCoordsTwo, secondImage);
    CGContextRestoreGState(context);

    // TIDY UP

    CGImageRelease(firstImage);
    CGImageRelease(secondImage);

}
于 2012-10-31T05:15:54.803 に答える