drawRect:
メソッドで配列から一連の円を描くコードがあります。私は、ポイントがメモリに十分長くとどまって、描画されるべきポイントに達することを確認することができます。しかし、NSBezierPath
のfill
メソッドが円を描いていないかのようです。ここでが呼び出されていますが、描画されていません
私は配列
- (void)drawDotAtPoint:(NSPoint)aPoint
{
NSLog(@"drawDotAtPoint:(%f, %f)", aPoint.x, aPoint.y);
[arrayOfPoints addObject:[NSValue valueWithPoint:aPoint]];
// I've also tried using [self superview] instead of just self
[self setNeedsDisplay: YES];
}
にポイントを追加し、私はこれらのメソッドが正しい時に呼び出されていることを確認することができる午前中に別の方法drawDotAtPoint:
を持っている私のdrawRect:
- (void)drawRect:(NSRect)dirtyRect
{
NSPoint aPoint;
NSRect aRect = NSMakeRect(0, 0, 6, 6);
// Erase the rectangle
[[NSColor clearColor] set];
NSRectFill([self bounds]);
// Draw the dots
[[NSColor colorWithCalibratedRed:(77.0/255.0) green:(11.0/255.0) blue:(11.0/255.0) alpha:1.0] set];
for(NSValue *aValuePoint in arrayOfPoints) {
aPoint = [aValuePoint pointValue];
aRect.origin.y = aPoint.y - aRect.size.height/2.0;
aRect.origin.x = aPoint.x - aRect.size.width/2.0;
// The code does get to this point, it does not draw however...
[[NSBezierPath bezierPathWithOvalInRect:aRect] fill];
}
}
です最初のdrawRectの後に描画がない(またはそう思われる)。
サイドノート: 私の目標は、実際にはポイントを描き、その周りにリングが表示され、拡大してフェードアウトします。 Mapsアプリでは、iOSのGPS現在地表示と似ています。それについての洞察もまた評価されるだろう。
このコードは私にとって完璧に機能します...あなたのビューをどのように作成していますか? –
私はそれをウィンドウのcontentViewとして設定しています:[self setContentView:[[VisualEventView alloc] initWithFrame:[[self contentView] frame]]]; – TheCrypticAce
まだ私のために働いています... '[self canDraw]'はforループの中で何を言いますか?また、2つのメモ:私は 'clearColor'とは思っていないと思います。透明です(' 'NSEraseRect')(http://developer.apple.com/library/mac/documentation/Cocoa /リファレンス/アプリケーションキット/その他/アプリケーション機能/リファレンス/リファレンス.html#//アプリケーション/リファレンス/スタイル/コンベンションの問題として、あなたのメソッドは実際に描画をしなければ 'draw ...'で始めるべきではありません。 –