こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

objective-c initWithFocusedViewRectについて

objective-cにて、画像を読み取り上下反転して保存する処理を行っているんのですが、次のプログラムを動作させてたときに縮尺が思ったとおりにいきません。

[bitmap lockFocus];
NSRect r = (0, 0, width,height);
NSBitmapImageRep *rbitmap = [[NSBitmapImageRep alloc] initWithFocusedViewRect:r];
[bitmap unlockFocus];

ここで、bitmapとrbitmapのサイズを調べてみると異なる数値が表示されます。
縮尺された感じです。
[bitmap]width:2272 height:1704
[rbitmap]widht:909 height:682

NSRectとinitWithFocusedViewRectについて調べてみたのですが、縮尺に関する記載がないように思えます。

同じサイズのbitmapを生成するには、initWithFocusedViewRectではダメなのでしょうか?

ご教授の程、宜しくお願いします。

投稿日時 - 2010-02-23 03:23:42

QNo.5699101

すぐに回答ほしいです

質問者が選んだベストアンサー

「initWithFocusedViewRect:」は、対象のViewの一部を切り取って、バッファリングするメソッドです。生成したNSBitmapImageRepのインスタンスのサイズは、「NSRect r」と同じになります。

> 同じサイズのbitmapを生成するには、initWithFocusedViewRectではダメなのでしょうか?

「initWithFocusedViewRect: [bitmap frame]」にすればいいでしょう。
(厳密には、NSMakeRect(0, 0, [bitmap frame].size.width, [bitmap frame].size.height)だけど)

投稿日時 - 2010-02-23 15:23:55

お礼

harawoさん、アドバイスありがとうございます。

ご指摘の方法で解決しました。
ありがごうございました。

あと、フォーカスの設定の前に以下の記述の追加でも解決しました。
[bitmap setScalesWhenResized:YES];
NSSize sz ={width, height};
[bitmap setSize:sz];

投稿日時 - 2010-02-24 00:17:57

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問