1

こんにちは、私は Cocoa プログラミングが初めてで、NSRectFill に関する問題に遭遇しました。

ウィンドウには 1 つのボタンがあり、以下は私の AppDelegate.m ファイルです。

@implementation LGAppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [[NSColor redColor] set];
    NSRectFill(NSMakeRect( 50,50,10,10));
}


- (IBAction)buttonPressed:(id)sender
{
    [[NSColor greenColor] set];
    NSRectFill(NSMakeRect( 60,60,10,10));
}
@end

私が期待していたのは、アプリケーションの起動時に四角形が表示され、ボタンをクリックした後に別の四角形が表示されることです。ただし、長方形が 1 つしか表示されず、ボタンをクリックしても何も起こりません。これを解決するのを手伝ってください。ありがとうございました。あなたの、Z

4

3 に答える 3

0

applicationDidFinishLaunching:プログラムがリソースのロードを「完了する」と、プログラムの起動時にバックグラウンドが呼び出されます。

ただし、この時点では、アプリケーションによって多数のウィンドウと多数のビューが表示される可能性があります。電話をかけるだけでNSRectFill()は不十分です。アプリケーションは、その四角形をどこに描画すればよいかわかりません (このウィンドウにありますか、それともそのウィンドウにありますか? この NSView にありますか?)。ウィンドウが 1 つしかなく、それが明らかなように見える場合でも、気付いていない複数の NSView が表示される可能性があります。また、コンピューターでは、コマンドを非常に明確にする必要があります。

肝心なのは、描画アクションが発生する場所について確立された「コンテキスト」がないということです。d00dle が指摘するように、 Drawing Guide を読む必要があります

NSViewdrawRect:が呼び出されると、コンテキスト (それ自体) が既に設定/定義されています。デリゲートから直接描画できますapplicationDidFinishLaunching:が、「コンテキスト」を定義する必要があります。

于 2013-06-21T18:51:18.800 に答える