gpt4 book ai didi

cocoa - 我无法根据用户点击的位置绘制 NSRect

转载 作者:行者123 更新时间:2023-12-03 18:01:13 26 4
gpt4 key购买 nike

我正在尝试绘制一个矩形,并让用户根据他单击的位置和拖动鼠标的位置来创建它。

我用来绘制 NSRect 的代码是:

CGFloat width = endPoint.x-startPoint.x; //Width of rectangle.
CGFloat height = endPoint.y-startPoint.y; //Height of rectangle.
CGFloat rectXPoint = startPoint.x; //x component of corner of rect
CGFloat rectYPoint = startPoint.x; //y component of corner of rect
if (width < 0) { //Handle negavive rect size here.
width = startPoint.x-endPoint.x;
rectXPoint = endPoint.x;
}
if (height < 0) { //and here.
height = startPoint.y-endPoint.y;
rectYPoint = endPoint.y;
}
NSRect theRect = NSMakeRect(rectXPoint, rectYPoint, width, height);
[[NSColor blackColor] set];
NSRectFill(theRect);

所以我可以让代码正常工作,但不完全是这样。有时它会将矩形的 y 距离光标偏移一些看似任意的量(即使我知道它不是任意的)。考虑到我需要将鼠标从需要演示的点移动,因此很难获得屏幕截图。以防万一您需要查看我如何获取鼠标位置的代码,它是:

- (void)mouseDown:(NSEvent *)event {
NSPoint location = [self convertPointFromBase:[event locationInWindow]];
startPoint = location;
}

- (void)mouseDragged:(NSEvent *)event {
NSPoint location = [self convertPointFromBase:[event locationInWindow]];
endPoint = location;
[self setNeedsDisplay:YES];
}

isFlipped 返回 YES。

如果您需要更多说明,请询问您需要说明的内容。

最佳答案

可能是这一行:

CGFloat rectYPoint = startPoint.x; //y component of corner of rect

关于cocoa - 我无法根据用户点击的位置绘制 NSRect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6234438/

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