gpt4 book ai didi

objective-c - 设置 CPView 框架,使其包围绘制的矩形

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

我在 Cappuccino 中的目标是调整 CPView 的框架,以便包含绘制矩形的每个点。矩形是可旋转的,这使得它变得棘手: here
(来源:asawicki.info)
.

我知道在 Cocoa 中我会使用 CGContextGetClipBoundingBox(context)。我将如何处理 Cappuccino 的此类问题?

编辑:根据亚历山大的提示,这就是我的问题的答案:

var context = [[CPGraphicsContext currentContext] graphicsPort],
transform = CGAffineTransformRotate(CGAffineTransformMakeTranslation(CGRectGetWidth([self bounds])/2, CGRectGetHeight([self bounds])/2), rotationRadians);

CGContextBeginPath(context);
path2 = CGPathCreateMutable();
CGPathAddRect(path2, transform, CGRectMake(-newWidth/2, -newHeight/2, newWidth, newHeight));
CGContextAddPath(context, path2);
CGContextClosePath(context);
CGContextSetFillColor(context, [CPColor yellowColor]);
CGContextFillPath(context);

CGContextRestoreGState(context);

var frame = [self frame];
frame.size.width = CGRectGetWidth([self bounds]);
frame.size.height = CGRectGetHeight([self bounds]);
oldFrameWidth = frame.size.width;
oldFrameHeight = frame.size.height;
newFrameWidth = CGRectGetWidth(CGPathGetBoundingBox(path2));
newFrameHeight = CGRectGetHeight(CGPathGetBoundingBox(path2));
frame.size.width = newFrameWidth;
frame.size.height = newFrameHeight;
frame.origin.x -= (newFrameWidth - oldFrameWidth)/2;
frame.origin.y -= (newFrameHeight - oldFrameHeight)/2;
[self setFrame:frame];

最佳答案

如果myPath是描述旋转矩形的CGPath,您可以使用以下方法获取边界矩形:

CGPathGetBoundingBox(myPath)

关于objective-c - 设置 CPView 框架,使其包围绘制的矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20642185/

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