2012-03-22 9 views
10

でオフスクリーンイメージに描画、特定のサイズの白紙画像を作成し、それに画面をオフに描画することは非常に簡単です:UIImage:MAC OSX(ココア)でのiOS

NSImage* image = [[NSImage alloc] initWithSize:NSMakeSize(64,64)]; 
[image lockFocus]; 
/* drawing code here */ 
[image unlockFocus]; 

しかし、 、iOS(ココアタッチ)ではUIImageと同等の呼び出しがないようです。私はUIImage(または他の同等のクラス)を使って同じことをしたいと思います。つまり、私はUIRectFill(...)[UIBezierPath stroke]のような呼び出しを使用して描くことができる、最初は空のイメージである明示的なサイズを作りたいと思います。

どうすればよいですか?

答えて

8

UIImageはあなたが説明するもののような高レベルの機能を持っていないようCoreGraphicsが

UIGraphicsBeginImageContext(CGSizeMake(64,64)); 

CGContextRef context = UIGraphicsGetCurrentContext(); 
// drawing code here (using context) 

UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
3

あなたは次のようにそれを行うことができます:ここで

UIGraphicsBeginImageContext(CGSizeMake(64, 64)); 
//Drawing code here 
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

は、Appleの Graphics and Drawing参照です。

+1

しかし、画像のコンテキストを終了することを忘れないでください! –

+0

はい、私はそれを忘れてコピーします。 – sch

+0

これは 'NSImage'を作成して' lockFocus'を呼び出すのと同じことだと思いますが、どうすればフォーカスを解除できますか? – mtmurdock

0

...、ここで必要とされている。このような何か:

UIGraphicsBeginImageContextWithOptions(mySize, NO, 0.0f);  
CGContextRef context = UIGraphicsGetCurrentContext(); 
UIGraphicsPushContext(context); 

[myImage drawInRect:myImageRect]; 
[myText drawAtPoint:myOrigin withFont:myFont]; 

UIGraphicsPopContext(); 
UIImage *myNewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
+0

UIGraphicsBeginImageContextWithOptionsをUIGraphicsBeginImageContextではなくUIGraphicsBeginImageContextWithOptionsを使用してデバイスでサポートされている縮尺で描画することができます。 UIGraphicsBeginImageContextを使用すると、網膜の表示が貧弱になります。 –

+2

'UIGraphicsPushContext(context);および' UIGraphicsPopContext(); 'は、' UIGraphicsBeginImageContextWithOptions(mySize、NO、0.0f);および 'UIGraphicsEndImageContext();'が既にそれを行っているため削除できます。 – sch

+0

ええ、私はそれについて疑問に思いました。ありがとう。 –

関連する問題