en

hi, it seems you are using microsoft internet explorer. it doesn't match web standard and causes problems browsing this site. please please please use mozilla firefox or google chrome instead. thank you!

zh

哦哦!您正在使用Internet Explorer 瀏覽器,它與我們的網頁標準並不相容,可能會導致畫面顯示不正常。
請改用 Mozilla Firefox 或者 Google Chrome 才能正常瀏覽本網站,謝謝!

7.25.2011

CALayer 的 setMask

 

CALayer  提供了一個簡單的遮罩方式,透過 setMask 方法,即可對該圖層使用簡單的 Alpha 透明度遮罩,如同 Gradient 漸層與遮色片的應用一文中的透明遮罩效果,其程式瑪如下。

由於需動用到 Layer 中的方法,所以在使用前必須先將對應的 Framework 匯入,並引入其標頭檔。



#import <QuartzCore/QuartzCore.h>
//取得透明度遮罩的影像與大小
UIImage *maskImage = [UIImage imageNamed:@"AlphaMask.png"];
CGRect rect = CGRectMake(0.0, 0.0, maskImage.size.width, maskImage.size.height);

//製作一個透明遮罩的Layer
CALayer *maskLayer = [[CALayer layer]retain];
maskLayer.frame = rect;
maskLayer.contents = (id)maskImage.CGImage;

//將imageView中的影像做透明度的遮罩
[[imageView layer] setMask:maskLayer];

[maskLayer release];

ps:遮罩影像為 32bit 的純黑色影像,在漸層上是使用透明度來製作,並非黑白漸層。





沒有留言:

張貼留言