2011-10-28 14 views
5
/* Adding the Path */ 
UserGraphBuff = UIGraphicsGetCurrentContext(); 

CGContextSetRGBStrokeColor(UserGraphBuff,5,10,0,1); 
CGContextSetLineWidth(UserGraphBuff, 2); 

CGContextBeginPath(UserGraphBuff); 

//line to last user point 
CGContextAddLineToPoint(UserGraphBuff, (*xVal)[sizeof xVal/sizeof *xVal - 1], (*yNewVal)[sizeof yNewVal/sizeof *yNewVal - 1]); 
//line to rest of user points in reverse order 
for (int i = sizeof xVal/sizeof *xVal - 1; i > -1; i--){ 
    CGContextAddLineToPoint(UserGraphBuff, (*xVal)[i], (*yNewVal)[i]); 
} 

//EOFill 
CGContextEOFillPath(UserGraphBuff); 

上記は私が処理しようとしているコードです。そのCGContextが言っていることをするはずですが、私は描かれていません。 私はこのエラーを取得しておいてください。CGContext *関数を使用しているときに '無効なコンテキスト0x0'エラーが発生する

Fri Oct 28 13:18:40 case.app testApplication[4127] <Error>: CGContextSetRGBStrokeColor: invalid context 0x0 
Fri Oct 28 13:18:40 case.app testApplication[4127] <Error>: CGContextSetLineWidth: invalid context 0x0 
Fri Oct 28 13:18:40 case.app testApplication[4127] <Error>: CGContextBeginPath: invalid context 0x0 
Fri Oct 28 13:18:40 case.app testApplication[4127] <Error>: CGContextAddLineToPoint: invalid context 0x0 
Fri Oct 28 13:18:40 case.app testApplication[4127] <Error>: CGContextDrawPath: invalid context 0x0 

私は私のヘッダファイルにCGContextRefを参照。

私はCGContextをよく理解しているとは思っていませんし、CGContextRefが何であるべきかも分かりません。あなたのコードが動作するため

+0

このコードはどこにありますか? 'UIView'サブクラスの' drawRect'では? – MusiGenesis

+0

' - (void)userShow {' –

+1

どうしたの?それは何をするためのものか?それは '-drawRect:'によって呼び出されますか? –

答えて

17

、それは(あなたが直接drawRectを呼び出すことはありません - それは自分自身をレンダリングするためのUIViewを必要とするとき、これはOSによって呼び出される)あなたのUIViewサブクラスのdrawRect方法で実行する必要があります。おそらくタッチイベントやviewDidLoadなどからこのコードを実行しようとしています。

+0

そのいくつかの独自の方法です。それだけでは呼ばれていません。私はチェックイベントからこれを実行しています。私はユーザーのデータが実際の図面(実際にはトレースゲーム)と相互参照されることを望みます。この時点で、私はただ人が描かれているものの道をすべてしようとしています。 –

+6

繰り返します:コードが動作しない(UIViewクラスの 'drawRect'メソッドで実行されていない限り、エラーが表示されます)。 – MusiGenesis

+4

そして説明する:UIViewは 'drawRect:'を呼び出す前に現在のコンテキストを設定します。これは機能です。描画が必要なときに描画します。描画は必要なときにシステムが追跡します。それと戦わないでください。描画コードを移動し、システムで作業します。ビューを再描画する必要がある何かが変更されたら、表示を必要なものとして設定します。 –