いつものiPhone OSプログラミングガイドにも「QuartzとUIKitを使用した描画」なんて章があって、説明はされてるんだけどね。ここらへんは読むのが当たり前として、最終的にはサンプルソース。
iPhone Dev Center
に行って、iPhone Reference Library>Resource Types>Sample Codeをあさってみると
Quartz2D APIを呼び出す簡単なソースだよ、ツ~、説明のあるサンプルソース発見。
QuartzDemo
求めよ、されば与えられん。しかも、もろに。
軽く動かしてみると、「Ellipses&Arcs」や、「Images&Tiling」あたりが使えそう。さっそく
MainViewController.m
を調べると、
// Ellipses, arcs, and as a bonus round-rects!
controller.quartzViewDelegate = [[[EllipseArcDrawing alloc] init] autorelease];
あたりから、EllipseArcDrawingクラス定義を読めばいいってのがわかる。
EllipseArcDrawingクラスがどこにあるかは、地道に検索してもいいけど下のように、EllipseArcDrawingの文字の上あたりで右クリックするとコンテキストメニュー出るから、そこで「定義へジャンプ」を選べばいい。マックで右クリックどうやってやるかは、過去記事読むように。
で、実装されてる
-(void)drawView:(QuartzView*)view inContext:(CGContextRef)context bounds:(CGRect)bounds
を見てみると
// Drawing with a white stroke color
CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0);
// Draw them with a 2.0 stroke width so they are a bit more visible.
CGContextSetLineWidth(context, 2.0);
// Stroke ellipse convenience that is equivalent to AddEllipseInRect(); StrokePath();
CGContextStrokeEllipseInRect(context, CGRectMake(30.0, 120.0, 60.0, 60.0));
なんてのが、使えそうなのがわかる。ここらへんの機能の調査方法は「iPhoneアプリ開発、その(33)」あたりを参考にしてね。
あと
CGContextRef context
を得る方法は
UIGraphicsGetCurrentContext()
これもdrawViewの引数なわけだから、drawViewを呼び出しているところを調べれば見つけることができる。ま~探すまでもなく「iPhone OSプログラミングガイド」読んでりゃ分かってる話だけどな。
さっそく
FlipsideView.m
の
drawRect
に実装してみましょう。今回は、素早く確認したいのでFlipside.xcodeprojを起動して編集。
どうすか?
スライダにあわせて円が大きくなったり、線の太さが変わったりしましたか?
これでこそ、独自ビューを用意しかかいがあったてえぇもんよ。でもって、ChimpanzeeGame.xcodeprojもビルドして実行すれば、連動して変わってる。ただし、ゲーム画面でのボタンの大きさは3段階なので、あいかわらず違和感ばりばりですな。
------------
サンプルプロジェクト:Chimpanzee-15.zip
iPhone Dev Center
に行って、iPhone Reference Library>Resource Types>Sample Codeをあさってみると
Quartz2D APIを呼び出す簡単なソースだよ、ツ~、説明のあるサンプルソース発見。
QuartzDemo
求めよ、されば与えられん。しかも、もろに。
軽く動かしてみると、「Ellipses&Arcs」や、「Images&Tiling」あたりが使えそう。さっそく
MainViewController.m
を調べると、
// Ellipses, arcs, and as a bonus round-rects!
controller.quartzViewDelegate = [[[EllipseArcDrawing alloc] init] autorelease];
あたりから、EllipseArcDrawingクラス定義を読めばいいってのがわかる。
EllipseArcDrawingクラスがどこにあるかは、地道に検索してもいいけど下のように、EllipseArcDrawingの文字の上あたりで右クリックするとコンテキストメニュー出るから、そこで「定義へジャンプ」を選べばいい。マックで右クリックどうやってやるかは、過去記事読むように。
で、実装されてる
-(void)drawView:(QuartzView*)view inContext:(CGContextRef)context bounds:(CGRect)bounds
を見てみると
// Drawing with a white stroke color
CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0);
// Draw them with a 2.0 stroke width so they are a bit more visible.
CGContextSetLineWidth(context, 2.0);
// Stroke ellipse convenience that is equivalent to AddEllipseInRect(); StrokePath();
CGContextStrokeEllipseInRect(context, CGRectMake(30.0, 120.0, 60.0, 60.0));
なんてのが、使えそうなのがわかる。ここらへんの機能の調査方法は「iPhoneアプリ開発、その(33)」あたりを参考にしてね。
あと
CGContextRef context
を得る方法は
UIGraphicsGetCurrentContext()
これもdrawViewの引数なわけだから、drawViewを呼び出しているところを調べれば見つけることができる。ま~探すまでもなく「iPhone OSプログラミングガイド」読んでりゃ分かってる話だけどな。
さっそく
FlipsideView.m
の
drawRect
に実装してみましょう。今回は、素早く確認したいのでFlipside.xcodeprojを起動して編集。
どうすか?
スライダにあわせて円が大きくなったり、線の太さが変わったりしましたか?
これでこそ、独自ビューを用意しかかいがあったてえぇもんよ。でもって、ChimpanzeeGame.xcodeprojもビルドして実行すれば、連動して変わってる。ただし、ゲーム画面でのボタンの大きさは3段階なので、あいかわらず違和感ばりばりですな。
------------
サンプルプロジェクト:Chimpanzee-15.zip