0

在我的程序中,我在NSViewusing中绘制了一些形状NSBezierPath。一切正常,看起来很棒,除非我调整窗口大小。

例子

初始图

初始图

窗口调整大小 窗口调整大小

有谁知道我应该用什么来防止这个正方形被锚定到初始位置,但让它相对于初始比例重新调整。

任何帮助表示赞赏!

4

1 回答 1

1

如果您在 drawRect: 中进行绘图,那么答案是否定的。您每次都需要重建和重新定位路径。您可以执行以下操作:

- (void) drawRect:(NSRect)dirtyRect
{
    // Assuming that _relPos with x and y having values bewteen 0 and 1.
    // To keep the square in the middle of the view you would set _relPos to
    // CGPointMake(0.5, 0.5).

    CGRect bounds = self.bounds;

    CGRect rect;
    rect.size.width  = 100;
    rect.size.height = 100;
    rect.origin.x = bounds.origin.x + bounds.size.width  * _relPos.x - rect.size.width /2;
    rect.origin.y = bounds.origin.y + bounds.size.height * _relPos.y - rect.size.height/2;

    NSBezierPath *path = [NSBezierPath bezierPathWithRect:rect];
    [[NSColor redColor] set];
    path.lineWidth = 2; 
    [path stroke];
}
于 2013-04-29T20:01:06.080 回答