Я новичок в мире CGAffine. Кто-нибудь знает, почему моя трансформация не работает/не принимается?CGRectApplyAffineTransform ничего не делает?
У меня есть действительное PDFContext созданного с UIGraphicsBeginPDFContextToData и следующая текущая матрица:
CGAffineTransform curMat = CGContextGetCTM(context); NSLog (@"current context matrix: %f %f %f %f %f %f", curMat.a, curMat.b, curMat.c, curMat.d, curMat.tx, curMat.ty);
значение NSLog:
текущей матрица: 1,000000 0,000000 -0,000000 -1,000000 0,000000 792,000000
Я создаю матрицу преобразования с:
CGAffineTransform xform = CGAffineTransformMake(a, b, c, d, tx, ty);
NSLog значения:
матрицы преобразования: 0,062500 0,000000 0,000000 0,062500 0,000000 0,000000
Я получаю мой прямоугольник от:
значенийCGRect pdfBounds = UIGraphicsGetPDFContextBounds();
NSLog:
pdfBounds: 0,000000 0,000000 612,000000 792,000000
Я применить матрицу преобразования с:
CGRectApplyAffineTransform (pdfBounds, xform);
Затем я вновь проверить текущее значение матрицы с:
CGAffineTransform curMat2 = CGContextGetCTM(context); NSLog (@"current context matrix after transformation: %f %f %f %f %f %f", curMat2.a, curMat2.b, curMat2.c, curMat2.d, curMat2.tx, curMat2.ty)
и значения NSLog такие же, как в начале ,
текущая матрица контекста после преобразования: 1,000000 0,000000 -0,000000 -1,000000 0,000000 792,000000
Что мне не хватает? Почему трансформация не происходит? Спасибо.
Спасибо! Теперь работает. Я должен помнить разницу между получением результата трансформации и ее применением. – TrekOnTV2017
Нет проблем, исходные шаги 5-7 больше не нужны. В этом примере вы можете применить преобразование непосредственно к контексту. – Joe
Да, вы правы. похоже, что CGContextConcatCTM может самостоятельно определить правильный CGRect из контекста – TrekOnTV2017