今回は読み込んだ画像の四隅を丸くして別名で保存してみる。前回のコードを流用する。
"save"ボタンを押すとデスクトップ上に roundrect.png が作成される。こんな感じ。
おお、めちゃくちゃ簡単だ。
保存コード部分だけ抜き出してみた。
MyView.m
-(IBAction)save:(id)sender
{
NSString* path = [NSSearchPathForDirectoriesInDomains(NSDesktopDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString* filename = [path stringByAppendingPathComponent:@"roundrect.png"];
NSLog(@"%@", filename);
NSSize size = [_image size];
NSRect rect = NSMakeRect(0, 0, size.width, size.height);
NSImage *rimg = [[NSImage alloc] initWithSize:size];
NSBezierPath* round = [NSBezierPath bezierPathWithRoundedRect:rect
xRadius:15.0 yRadius:15.0];
[rimg lockFocus];
[round setClip];
[_image compositeToPoint:NSZeroPoint operation:NSCompositeSourceOver];
[rimg unlockFocus];
NSData* data = [rimg TIFFRepresentation];
NSBitmapImageRep *bitmap_rep = [NSBitmapImageRep imageRepWithData:data];
data = [bitmap_rep representationUsingType:NSPNGFileType
properties:[NSDictionary dictionary]];
[data writeToFile:filename atomically:YES];
}
保存用の NSImage を作り、RoundRectパスでクリッピングを適用し、元画像で上書きする。これだけ。
ソース:RoundRect-3.zip
- - - -
(調子に乗って)今度は影でも付けてみるか。