0

IBのウィンドウに接続されているmapWindowというクラスがあります。

いずれにせよ、コードがdrawRectの下にあるか、ウィンドウの境界線を移動しない限り、プログラムにレンダリングさせたい赤い円は表示されません。フォーカスのロックを解除したりロックしたりしても、ウィンドウは更新されません。

theOtherWindowViewは、実際にはIBのカスタムビューに接続されたNSViewです。

- (void)test
{
    [theOtherWindowView lockFocus];
    NSBezierPath *path = [NSBezierPath bezierPath];
    NSPoint center = [self drawPoint];
    [path moveToPoint: center];
    [path appendBezierPathWithArcWithCenter:center
                                        radius:explosionRadius
                                    startAngle:0
                                    endAngle:360];
    [[NSColor redColor] set];
    [path fill];

    [theOtherWindowView unlockFocus];
}

drawRectを使用したくないのは、更新のたびに座標が変更される1つのシェイプではなく、複数のインスタンスが必要だからです

私も試しまし[self lockFocus][mapWindow lockFous]

4

1 に答える 1

2

で描画を続けます-drawRect:。が-drawRect:送信されると、ビューの座標系とクリッピング境界が設定され、ウィンドウの描画コンテキストが現在のものになります。

その方法では、これらの円を必要な数だけ描画します。

于 2011-06-13T05:45:20.450 に答える