CGPointとCGPathRefを作成して、CGPointがCGPathRefの内側にあるかどうかを調べようとしています。ここでは、コードは:CGPathIsRectが動作しないのはなぜですか?なぜCGPathContainsPointは機能しませんか?
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, 0, 0);
CGPathMoveToPoint(path, NULL, 200, 0);
CGPathMoveToPoint(path, NULL, 200, 200);
CGPathMoveToPoint(path, NULL, 0, 200);
CGPathCloseSubpath(path);
CGPoint hitPoint = CGPointMake(77, 77);
if (CGPathIsEmpty(path))
NSLog(@"Path Is Empty!");
else
{
if (CGPathIsRect(path, NULL))
NSLog(@"Path is a Rectangle!");
else
{
NSLog(@"Path is NOT a Rectangle!");
if (CGPathContainsPoint(path, NULL, hitPoint, FALSE)) // FALSE or TRUE - same result
NSLog(@"Hit Point Inside: x=%f, y=%f", hitPoint.x, hitPoint.y);
else
NSLog(@"Hit Point Outside: x=%f, y=%f", hitPoint.x, hitPoint.y);
}
}
出力を読み取り:
Path is NOT a Rectangle!
Hit Point Outside: x=77.000000, y=77.000000
経路が明らかに長方形であり、点は閉じた経路内にあります。私がここで間違っていることを私に手がかりにしてください。パスはCGPathCreateMutable
によって作成された単一の矩形がCGPathAddRect
でそれに加えた場合にパスが(矩形を回転又はスキューないtransform
パラメータで)CGPathCreateWithRect
によって作成された、またはされた場合
は非常にロブをありがとう!あなたのポイント-内部のテストが機能しない理由については
– StoneBreaker