这可能有一个我应该立即看到的明显答案,但我什至没有找到一个晦涩难懂的答案。请帮忙。它甚至让我想怀疑一个错误,但这不太可能。
我正在尝试制作一个在 zz 点交叉的函数,它可以部分工作。
在函数末尾的断点处停止时,将鼠标悬停在 Debug 中的变量上会显示值。我将来自 NSMakePoint 的结果 z1 和 z2 作为注释插入到相应的行中。
为什么 NSMakePoint 在一个地方失败而在我的程序的其他地方工作?
第一次出现应将 zz.x 增加 10;而是将 zz.y 增加 10。
第二次出现应将 zz.x 减少 10;而是将 zz.y 递减 10。
在接下来的两次事件中,它工作正常。
首先,我尝试在参数中增加 x ,如顶部注释所示;然后我尝试在参数之前增加 x ,如图所示。我试过浮动以及 CGFloat。
这里有什么问题?
#import "untitled.h"
CGFloat xx,yy;
NSPoint z1,z2, zz;
NSBezierPath *path;
void markpoint (NSPoint zz){ //zz= 133.333, 100 OK
// z2= NSMakePoint(zz.x+10,zz.y); I tried this first and failed;
then I broke out the increment as follows:
xx=zz.x+10; //xx= 143.333 OK
yy=zz.y; //yy= 100 OK
z1= NSMakePoint(xx,yy); //z1= 133.333,110 but should be 143.333,100
[path moveToPoint:z1];
z2= NSMakePoint(zz.x-10,zz.y); //z2= 133.333, 90 but should be 123.333,100
[path lineToPoint:z2];
z1= NSMakePoint(zz.x,zz.y+10); //z1= 133.333, 110 OK
[path moveToPoint:z1];
z2= NSMakePoint(zz.x,zz.y-10); //z2= 133.333, 90 OK
[path lineToPoint:z2];
}
附带问题:我找不到任何地方断言或否认 float 和 CGFloat 在 Bezier 系列函数和 Cocoa 中的 NSPoint 中是可互换的。他们是吗?