ページ

2008年3月29日土曜日

RoundRect その3

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

今回は読み込んだ画像の四隅を丸くして別名で保存してみる。前回のコードを流用する。


"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

- - - -
(調子に乗って)今度は影でも付けてみるか。