libro
www.tuyano.com
初心者のためのiphone/ipadプログラミング入門

Core Graphicsを更に使いこなそう! (4/6)

作成:2011-04-18 07:55
更新:2011-04-18 07:55

■UIImageと描画メソッド

それにしても、そのままでは上下が逆になるので、それをもとに戻すおまじないを書いておかないといけない……なんて、あんまりスマートなやり口とは思えません。もっとすっきりとした描画方法というのはないのでしょうか。

実は、あります。ここまで、描画関係はすべて「CGなんたら」といった関数を呼び出して実行するようなものばかりでした。これは、Core Graphicsに用意されている機能というのが、Objective-Cのみならず、C/C++などでも利用できるように考えられているためです。が、こういう「全部、関数で処理する」というのは、Objective-C的ではありませんね。Objective-Cなら、クラスを使ってオブジェクティブに処理を行うのが基本のはずです。

そこで改めて注目するのが「UIImage」です。これは、Objective-Cのクラスです。イメージを利用する場合、このインスタンスとしてイメージを用意しました。このクラス自身に、実は描画のためのメソッドというのも用意されています。

下のリストに掲載した、drawRect:メソッドの修正(1)が利用例です。これは、位置を指定してイメージを描画するものです。描画する領域を指定して描くものももちろんあって、これは、drawRect:メソッドの修正(2)のような形になります。いずれも、正しくイメージが描画されます。――ここで利用しているメソッドは以下のようなものです。
[《UIImage*》 drawAtPoint:《CGPoint》];
[《UIImage*》 drawInRect:《CGRect》];
どちらも、位置または領域の値を引数に渡すだけです。非常にシンプルですね。UIImageのメソッドを利用する場合、別途CGContextRefも用意する必要がないので、コードは非常に簡単なものになりますね。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※drawRect:メソッドの修正(1)

- (void)drawRect:(CGRect)rect
{
	CGPoint p = CGPointMake(20.0, 20.0);
	[myimg drawAtPoint:p];
}


※drawRect:メソッドの修正(2)

- (void)drawRect:(CGRect)rect
{
	CGSize s = [myimg size];
	CGRect r = CGRectMake(20, 20, s.width, s.height);
	
	[myimg drawInRect:r];
}
※関連コンテンツ

「初心者のためのiphone/ipadプログラミング入門」に戻る