2010年6月22日火曜日

図形の描画(iPhone/iPad)

スズキです。

図形の描画は、UIViewのサブクラスで、以下のように
"(void)drawRect:(CGRect)rect"をオーバーライドして実現します。

--------【BoardView.m】--------
...
- (void)drawRect:(CGRect)rect {
  CGContextRef context = UIGraphicsGetCurrentContext();
  CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0);
  CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1.0);
  CGContextSetLineWidth(context, 5.0);
  CGContextAddRect(context,
      CGRectMake((768 - 11 * 45.0) / 2 , 50.0, 11 * 45.0, 19 * 45.0)
  );
  CGPoint starPoints[] = {
      {(768 - 11 * 45.0) / 2, 50.0 + 19 * 45.0 / 2},
      {(768 - 11 * 45.0) / 2 + 11 * 45.0, 50.0 + 19 * 45.0 / 2}
  };
  CGContextAddLines(context,starPoints,sizeof(starPoints)/sizeof(*starPoints));
  CGContextStrokePath(context);
}
...
--------
http://code.google.com/p/suz-lab-ios/source/browse/trunk/FutsalBoard/Classes/Tabs/BoardView.m?r=12

実際には、CGContext系の関数を用いて図形を描画しているのですが、
詳細はこちらになります。
http://developer.apple.com/mac/library/documentation/GraphicsImaging/Reference/CGContext/Reference/reference.html

そして、上記UIViewのサブクラスは、
UIコントローラーのサブクラス上の"(void)loadView"で、下記のように設定しています。

--------【BoardViewController.m】--------
....
- (void)loadView {
  self.view = [[BoardView alloc] initWithFrame:CGRectMake(0, 0, 768, 1024)];
  [self.view release];
}
...
--------
http://code.google.com/p/suz-lab-ios/source/browse/trunk/FutsalBoard/Classes/Tabs/BoardViewController.m?r=12

早く、フットサルコート、完成させないと...

--------
http://www.suz-lab.com

0 コメント: