首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我不能根据用户单击的位置绘制NSRect

我不能根据用户单击的位置绘制NSRect
EN

Stack Overflow用户
提问于 2011-06-04 11:03:20
回答 1查看 225关注 0票数 0

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

我用来绘制NSRect的代码是:

代码语言:javascript
复制
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从光标偏移一些看似任意的量(即使我知道这不是任意的)。很难截取屏幕截图,因为这需要我将鼠标从需要演示的点上移动。为了防止你需要查看我如何获取鼠标位置的代码,这里是:

代码语言:javascript
复制
- (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。

如果您需要更多的澄清,请询问您需要澄清的内容。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-04 11:12:36

可能是下面这行:

代码语言:javascript
复制
CGFloat rectYPoint = startPoint.x; //y component of corner of rect
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6234438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档