私はNSBox
を持っていますが、その中に小さい矩形を描いています。NSRectFill()
です。私のコードは次のようになります:NSRectFillで描画されたココアを消去しますか?
for (int i = 0; i <= 100; i++){
int x = (rand() % 640) + 20;
int y = (rand() % 315) + 196;
array[i] = NSMakeRect(x, y, 4, 4);
NSRectFill(array[i]);
}
このforループは、グリッド内に100個のランダムに配置された矩形を作成します。
for (int i = 0; i <= 10; i++) {
[self performSelector:@selector(executeFrame) withObject:nil afterDelay:(.05*i)];
}
ループの最初で唯一のものです:私は何をしようとしていることは、このコードで、何度も実行し、このコードによって作成されたアニメーションのようなものを作成、ランダムに表示される長方形のアニメーションを作成でちなみに、executeFrame
の機能の中にあります。だから、私がする必要があるのは、フレーム間のすべての長方形を消去することです。そのため、それらの数は同じままで、移動しているように見えます。私はexecuteFrame
を呼び出す前に[myNsBox display];
と呼んで背景をもう一度描くだけでこれをやってみましたが、それはまるで四角形が描画されていないように見えました。同じことをした後に呼び出すと、表示の代わりにsetNeedsDisplay
に切り替わりました。私はこれを理解することはできません、どんな助けも認められるでしょう。
ちなみに、フレームを実行するコードを実行しようとすると、その間に四角形を消去せずに、100個の四角形が描画されます。私は1000を描くことを要求したとしても、10,000を描くことを要求しても。しかし、私が窓を離れて戻ってきたら(すぐに時間はここの要素ではありません)、ページが更新され、長方形がそこにあります。私は[box setNeedsDisplayInRect:array[i]];
でこれを克服しようとしましたが、これは奇妙な方法で動作し、すべてのフレームを更新しましたが、長方形の一部を消去しました。これについての助けもありがたいです。
をダウンロードすることができますそれはあなたのビューを送信することは、 'display'メッセージが適切なソリューションであることは非常にまれです。あなたは通常、 'needsDisplay'を設定してAppKitに適切なタイミングで描画させるように指示するだけで、AppKitが指示するときはすべての描画を行います。 –