1
iOS 코드를 OSX 코드로 변환하려고하는데 그래픽 포팅에 어려움이 있습니다. 그러면 나는 그것을 OSX에 대한 이런 식으로 다시 썼다 ...CGAffineTransform에서 NSAffineTransform을 만드는 방법이 있습니까?
NSRect rect = NSMakeRect(centerX.doubleValue - width.doubleValue/2,
centerY.doubleValue - height.doubleValue/2,
width.doubleValue, height.doubleValue);
UIBezierPath * path = nil;
switch (self.shape)
{
case HSTargetShapeInvisible:
path = [UIBezierPath bezierPath];
break;
case HSTargetShapeOval:
path = [UIBezierPath bezierPathWithOvalInRect:rect];
break;
case HSTargetShapeRectangle:
path = [UIBezierPath bezierPathWithRect:rect];
break;
default:
break;
}
CGAffineTransform translate = CGAffineTransformMakeTranslation(-1 * centerX.doubleValue,
-1 * centerY.doubleValue);
[path applyTransform:translate];
CGAffineTransform rotate = CGAffineTransformMakeRotation(rotation.doubleValue/180 * M_PI);
[path applyTransform:rotate];
translate = CGAffineTransformMakeTranslation(centerX.doubleValue, centerY.doubleValue);
[path applyTransform:translate];
이 완벽하게 일 :
NSRect rect = NSMakeRect(centerX.doubleValue - width.doubleValue/2,
centerY.doubleValue - height.doubleValue/2,
width.doubleValue, height.doubleValue);
NSBezierPath * path = nil;
switch (self.shape)
{
case HSTargetShapeInvisible:
path = [NSBezierPath bezierPath];
break;
case HSTargetShapeOval:
path = [NSBezierPath bezierPathWithOvalInRect:rect];
break;
case HSTargetShapeRectangle:
path = [NSBezierPath bezierPathWithRect:rect];
break;
default:
break;
}
NSAffineTransform *rot = [NSAffineTransform transform];
NSAffineTransform *pos = [NSAffineTransform transform];
[pos translateXBy:-1*centerX.doubleValue yBy:-1*centerY.doubleValue];
[rot rotateByRadians:rotation.doubleValue/180 * M_PI];
[pos translateXBy:centerX.doubleValue
yBy:centerY.doubleValue ];
[rot appendTransform:pos];
[path transformUsingAffineTransform:rot];
을 그리고이 같은 방식으로 작동하지 않습니다
에서 아이폰 OS 나는이 있었다. 아무도 문제가 어디 있는지 아십니까?!
모든 종류의 도움을 받으실 수 있습니다.
을 pos 변환은 서로 취소합니다. 모든 작업을 동일한 변환에 적용하면 효과가 있습니다. –
이미 시도했습니다 .... 작동하지 않습니다. –