在我的程序中,我在NSView
using中绘制了一些形状NSBezierPath
。一切正常,看起来很棒,除非我调整窗口大小。
例子
初始图
窗口调整大小
有谁知道我应该用什么来防止这个正方形被锚定到初始位置,但让它相对于初始比例重新调整。
任何帮助表示赞赏!
在我的程序中,我在NSView
using中绘制了一些形状NSBezierPath
。一切正常,看起来很棒,除非我调整窗口大小。
例子
初始图
窗口调整大小
有谁知道我应该用什么来防止这个正方形被锚定到初始位置,但让它相对于初始比例重新调整。
任何帮助表示赞赏!
如果您在 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];
}