gpt4 book ai didi

objective-c - 使 NSBezierPath 在 windowResize 上保持相对于 NSView

转载 作者:行者123 更新时间:2023-12-03 17:54:16 25 4
gpt4 key购买 nike

在我的程序中,我使用 NSBezierPathNSView 内绘制一些形状。除了当我调整窗口大小时,一切都正常并且看起来很棒。

示例

初始绘图

Initial drawing

调整窗口大小 Window resize

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

感谢任何帮助!

最佳答案

如果您在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];
}

关于objective-c - 使 NSBezierPath 在 windowResize 上保持相对于 NSView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16285212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com