有没有办法将UIKit坐标(0,0左上角)转换为Quartz / CoreImage(0,0左下角)?在这里找不到像这样迅速相关的东西。
答案 0 :(得分:3)
你可以使用仿射变换矩阵,这个剪切是从我的代码中取出来从Core Image / Core图形转换为UIKit:
CGAffineTransform t = CGAffineTransformMakeScale(1, -1);
t = CGAffineTransformTranslate(t,0, -imageView.bounds.size.height);
基本上你需要:
之后您可以使用这些几何函数来计算矩形或点
CGPoint pointUIKit = CGPointApplyAffineTransform(pointCI, t);
CGRect rectUIKit = CGRectApplyAffineTransform(rectCI, t);
在Swift 3.x中:
var t = CGAffineTransform(scaleX: 1, y: -1)
t = t.translatedBy(x: 0, y: -imageView.bounds.size.height)
let pointUIKit = pointCI.applying(t)
let rectUIKIT = rectCI.applying(t)
答案 1 :(得分:2)
原点位于左下角而左上角,您需要对X轴不做任何操作,但需要翻转右轴。 UIKit(或在本例中为Core Graphics)使用CGPoints。 Core Image通常使用CIVectors,它可以有2个,3个或4个轴角。
这是一个简单的函数,它将CGPoint(X,Y)转换为CIVector(X,Y):
func createVector(_ point:CGPoint, image:CIImage) -> CIVector {
return CIVector(x: point.x, y: image.extent.height - point.y)
}