Ссылка CGAffineTransform
CGAffineTransform
структура данных представляет матрицу, используемую для аффинных преобразований. Трансформация указывает, как точки в одной системе координат отображаются на точки в другой системе координат. Аффинное преобразование является специальным типом отображения, сохраняющего параллельные строки по пути, но не обязательно сохраняющего длины или углы. При масштабировании вращение и перевод являются обычно используемыми манипуляциями, поддерживаемыми аффинными преобразованиями, но скос также возможен.
Кварц обеспечивает функции, создающие, связывающие и применяющие аффинные преобразования с помощью CGAffineTransform
структура данных. Для получения информации о том, как использовать функции аффинного преобразования, посмотрите Кварц 2D Руководство по программированию.
Вы обычно не должны создавать аффинное преобразование непосредственно — Ссылка CGContext описывает функции, изменяющие текущее аффинное преобразование. Если Вы не планируете снова использовать аффинное преобразование, можно хотеть использовать CGContextScaleCTM
, CGContextRotateCTM
, CGContextTranslateCTM
, или CGContextConcatCTM
.
-
Возвращает матрицу аффинного преобразования, созданную из значений, которые Вы обеспечиваете.
Объявление
Objective C
CGAffineTransform CGAffineTransformMake ( CGFloat a, CGFloat b, CGFloat c, CGFloat d, CGFloat tx, CGFloat ty );
Параметры
a
Значение в позиции [1,1] в матрице.
b
Значение в позиции [1,2] в матрице.
c
Значение в позиции [2,1] в матрице.
d
Значение в позиции [2,2] в матрице.
tx
Значение в позиции [3,1] в матрице.
ty
Значение в позиции [3,2] в матрице.
Возвращаемое значение
Новая матрица аффинного преобразования создала из значений, которые Вы указываете.
Обсуждение
Эта функция создает a
CGAffineTransform
структура, представляющая новую матрицу аффинного преобразования, которую можно использовать (и повторное использование, если Вы хотите) преобразовать систему координат. Матрица принимает следующую форму:Поскольку третий столбец всегда
(0,0,1)
,CGAffineTransform
структура данных, возвращенная этой функцией, содержит значения для только первых двух столбцов.Если Вы хотите только преобразовать объект, который будет нарисован, не необходимо создать аффинное преобразование, чтобы сделать так. Самый прямой способ преобразовать Ваше получение путем вызова надлежащего
CGContext
функция для корректировки текущей матрицы преобразования. Для списка функций см. Ссылку CGContext.Оператор импорта
Objective C
@import CoreGraphics;
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает матрицу аффинного преобразования, созданную из значения вращения, которое Вы обеспечиваете.
Объявление
Swift
func CGAffineTransformMakeRotation(_
angle
: CGFloat) -> CGAffineTransformObjective C
CGAffineTransform CGAffineTransformMakeRotation ( CGFloat angle );
Параметры
angle
Угол, в радианах, на которые эта матрица поворачивает оси системы координат. В iOS положительное значение указывает против часовой стрелки вращение, и отрицательная величина указывает по часовой стрелке вращение. В OS X положительное значение указывает по часовой стрелке вращение, и отрицательная величина указывает против часовой стрелки вращение.
Возвращаемое значение
Новая матрица аффинного преобразования.
Обсуждение
Эта функция создает a
CGAffineTransform
структура, которую можно использовать (и повторное использование, если Вы хотите) поворачивать систему координат. Матрица принимает следующую форму:Фактическое направление вращения зависит от ориентации системы координат целевой платформы, отличающейся в iOS и OS X. Поскольку третий столбец всегда
(0,0,1)
,CGAffineTransform
структура данных, возвращенная этой функцией, содержит значения для только первых двух столбцов.Это получающиеся уравнения что Кварцевое использование для применения вращения к точке (x, y):
Если Вы хотите только повернуть объект, который будет нарисован, не необходимо создать аффинное преобразование, чтобы сделать так. Самый прямой способ повернуть Ваше получение путем вызывания функции
CGContextRotateCTM
.Оператор импорта
Objective C
@import CoreGraphics;
Swift
import CoreGraphics
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает матрицу аффинного преобразования, созданную из масштабирования значений, которые Вы обеспечиваете.
Объявление
Swift
func CGAffineTransformMakeScale(_
sx
: CGFloat, _sy
: CGFloat) -> CGAffineTransformObjective C
CGAffineTransform CGAffineTransformMakeScale ( CGFloat sx, CGFloat sy );
Параметры
sx
Фактор, которым можно масштабировать ось X системы координат.
sy
Фактор, которым можно масштабировать ось y системы координат.
Возвращаемое значение
Новая матрица аффинного преобразования.
Обсуждение
Эта функция создает a
CGAffineTransform
структура, которую можно использовать (и повторное использование, если Вы хотите) масштабировать систему координат. Матрица принимает следующую форму:Поскольку третий столбец всегда
(0,0,1)
,CGAffineTransform
структура данных, возвращенная этой функцией, содержит значения для только первых двух столбцов.Это получающиеся уравнения что Кварцевое использование для масштабирования координат точки (x, y):
Если Вы хотите только масштабировать объект, который будет нарисован, не необходимо создать аффинное преобразование, чтобы сделать так. Самый прямой способ масштабировать Ваше получение путем вызывания функции
CGContextScaleCTM
.Оператор импорта
Objective C
@import CoreGraphics;
Swift
import CoreGraphics
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает матрицу аффинного преобразования, созданную из значений перевода, которые Вы обеспечиваете.
Объявление
Swift
func CGAffineTransformMakeTranslation(_
tx
: CGFloat, _ty
: CGFloat) -> CGAffineTransformObjective C
CGAffineTransform CGAffineTransformMakeTranslation ( CGFloat tx, CGFloat ty );
Параметры
tx
Значение, которым можно переместить ось X системы координат.
ty
Значение, которым можно переместить ось y системы координат.
Возвращаемое значение
Новая матрица аффинного преобразования.
Обсуждение
Эта функция создает a
CGAffineTransform
структура. который можно использовать (и повторное использование, если Вы хотите) перемещать систему координат. Матрица принимает следующую форму:Поскольку третий столбец всегда
(0,0,1)
,CGAffineTransform
структура данных, возвращенная этой функцией, содержит значения для только первых двух столбцов.Это получающееся Кварцевое использование уравнений для применения перевода в точку (x, y):
Если Вы хотите только переместить расположение, где объект нарисован, не необходимо создать аффинное преобразование, чтобы сделать так. Самый прямой способ переместить Ваше получение путем вызывания функции
CGContextTranslateCTM
.Оператор импорта
Objective C
@import CoreGraphics;
Swift
import CoreGraphics
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает матрицу аффинного преобразования, созданную путем перевода существующего аффинного преобразования.
Объявление
Swift
func CGAffineTransformTranslate(_
t
: CGAffineTransform, _tx
: CGFloat, _ty
: CGFloat) -> CGAffineTransformObjective C
CGAffineTransform CGAffineTransformTranslate ( CGAffineTransform t, CGFloat tx, CGFloat ty );
Параметры
t
Существующее аффинное преобразование.
tx
Значение, которым можно переместить значения x с аффинным преобразованием.
ty
Значение, которым можно переместить значения y с аффинным преобразованием.
Возвращаемое значение
Новая матрица аффинного преобразования.
Обсуждение
Вы используете эту функцию для создания нового аффинного преобразования путем добавления, что перевод оценивает существующему аффинному преобразованию. Получающаяся структура представляет новое аффинное преобразование, которое можно использовать (и повторное использование, если Вы хотите) перемещать систему координат.
Оператор импорта
Objective C
@import CoreGraphics;
Swift
import CoreGraphics
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает матрицу аффинного преобразования, созданную путем масштабирования существующего аффинного преобразования.
Объявление
Swift
func CGAffineTransformScale(_
t
: CGAffineTransform, _sx
: CGFloat, _sy
: CGFloat) -> CGAffineTransformObjective C
CGAffineTransform CGAffineTransformScale ( CGAffineTransform t, CGFloat sx, CGFloat sy );
Параметры
t
Существующее аффинное преобразование.
sx
Значение, которым можно масштабировать x значения аффинного преобразования.
sy
Значение, которым можно масштабировать y значения аффинного преобразования.
Возвращаемое значение
Новая матрица аффинного преобразования.
Обсуждение
Вы используете эту функцию для создания новой матрицы аффинного преобразования путем добавления масштабирующихся значений к существующему аффинному преобразованию. Получающаяся структура представляет новое аффинное преобразование, которое можно использовать (и повторное использование, если Вы хотите) масштабировать систему координат.
Оператор импорта
Objective C
@import CoreGraphics;
Swift
import CoreGraphics
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает матрицу аффинного преобразования, созданную путем вращения существующего аффинного преобразования.
Объявление
Swift
func CGAffineTransformRotate(_
t
: CGAffineTransform, _angle
: CGFloat) -> CGAffineTransformObjective C
CGAffineTransform CGAffineTransformRotate ( CGAffineTransform t, CGFloat angle );
Параметры
t
Существующее аффинное преобразование.
angle
Угол, в радианах, на которые можно повернуть аффинное преобразование. В iOS положительное значение указывает против часовой стрелки вращение, и отрицательная величина указывает по часовой стрелке вращение. В OS X положительное значение указывает по часовой стрелке вращение, и отрицательная величина указывает против часовой стрелки вращение.
Возвращаемое значение
Новая матрица аффинного преобразования.
Обсуждение
Вы используете эту функцию для создания новой матрицы аффинного преобразования путем добавления, что вращение оценивает существующему аффинному преобразованию. Получающаяся структура представляет новое аффинное преобразование, которое можно использовать (и повторное использование, если Вы хотите) поворачивать систему координат.
Фактическое направление вращения зависит от ориентации системы координат целевой платформы, отличающейся в iOS и OS X.
Оператор импорта
Objective C
@import CoreGraphics;
Swift
import CoreGraphics
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает матрицу аффинного преобразования, созданную путем инвертирования существующего аффинного преобразования.
Объявление
Swift
func CGAffineTransformInvert(_
t
: CGAffineTransform) -> CGAffineTransformObjective C
CGAffineTransform CGAffineTransformInvert ( CGAffineTransform t );
Параметры
t
Существующее аффинное преобразование.
Возвращаемое значение
Новая матрица аффинного преобразования. Если аффинное преобразование передается в параметре
t
не может быть инвертирован, Кварц возвращает неизменное аффинное преобразование.Обсуждение
Инверсия обычно используется для обеспечения обратной трансформации точек в преобразованных объектах. Учитывая координаты (x, y), которые были преобразованы данной матрицей к новым координатам (x’, y’), преобразовав координаты (x’, y’) обратной матрицей производит исходные координаты (x, y).
Оператор импорта
Objective C
@import CoreGraphics;
Swift
import CoreGraphics
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает матрицу аффинного преобразования, созданную путем объединения двух существующих аффинных преобразований.
Объявление
Swift
func CGAffineTransformConcat(_
t1
: CGAffineTransform, _t2
: CGAffineTransform) -> CGAffineTransformObjective C
CGAffineTransform CGAffineTransformConcat ( CGAffineTransform t1, CGAffineTransform t2 );
Параметры
t1
Первое аффинное преобразование.
t2
Второе аффинное преобразование. Это аффинное преобразование связывается к первому аффинному преобразованию.
Возвращаемое значение
Новая матрица аффинного преобразования. Т.е. t’ = t1*t2.
Обсуждение
Связь комбинирует две матрицы аффинного преобразования путем умножения их вместе. Вы могли бы выполнить несколько связей для создания единственного аффинного преобразования, содержащего кумулятивные эффекты нескольких трансформаций.
Обратите внимание на то, что операции над матрицей не являются коммутативными — порядок, в котором Вы конкатенируете, матрицы важно. Т.е. результат умножения матрицы
t1
матрицейt2
не обязательно равняется результату умножения матрицыt2
матрицейt1
.Оператор импорта
Objective C
@import CoreGraphics;
Swift
import CoreGraphics
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает точку, следующую из аффинного преобразования существующей точки.
Объявление
Objective C
CGPoint CGPointApplyAffineTransform ( CGPoint point, CGAffineTransform t );
Параметры
point
Точка, указывающая x-и y-координаты для преобразования.
t
Аффинное преобразование для применения.
Возвращаемое значение
Новая точка, следующая из применения указанного аффинного преобразования к существующей точке.
Оператор импорта
Objective C
@import CoreGraphics;
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает высоту и ширину, следующую из трансформации существующей высоты и ширины.
Объявление
Objective C
CGSize CGSizeApplyAffineTransform ( CGSize size, CGAffineTransform t );
Параметры
size
Размер, указывающий высоту и ширину для преобразования.
t
Аффинное преобразование для применения.
Возвращаемое значение
Новый размер, следующий из применения указанного аффинного преобразования к существующему размеру.
Оператор импорта
Objective C
@import CoreGraphics;
Доступность
Доступный в OS X v10.0 и позже.
-
Применяет аффинное преобразование к прямоугольнику.
Объявление
Swift
func CGRectApplyAffineTransform(_
rect
: CGRect, _t
: CGAffineTransform) -> CGRectObjective C
CGRect CGRectApplyAffineTransform ( CGRect rect, CGAffineTransform t );
Параметры
rect
Прямоугольник, угловые точки которого Вы хотите преобразовать.
t
Аффинное преобразование для применения к
rect
параметр.Возвращаемое значение
Преобразованный прямоугольник.
Обсуждение
Поскольку аффинные преобразования не сохраняют прямоугольники в целом, функцию
CGRectApplyAffineTransform
возвращает наименьший прямоугольник, содержащий преобразованные угловые точкиrect
параметр. Если аффинное преобразованиеt
состоит исключительно из масштабирования и операций перевода, тогда возвращенный прямоугольник совпадает с прямоугольником, созданным из четырех преобразованных углов.Оператор импорта
Objective C
@import CoreGraphics;
Swift
import CoreGraphics
Доступность
Доступный в OS X v10.4 и позже.
-
Проверки, является ли аффинное преобразование идентификационными данными, преобразовывают.
Объявление
Swift
func CGAffineTransformIsIdentity(_
t
: CGAffineTransform) -> BoolObjective C
bool CGAffineTransformIsIdentity ( CGAffineTransform t );
Параметры
t
Аффинное преобразование для проверки.
Возвращаемое значение
Возвраты
true
еслиt
идентификационные данные, преобразовывают,false
иначе.Оператор импорта
Objective C
@import CoreGraphics;
Swift
import CoreGraphics
Доступность
Доступный в OS X v10.4 и позже.
-
Проверки, равны ли два аффинных преобразования.
Объявление
Swift
func CGAffineTransformEqualToTransform(_
t1
: CGAffineTransform, _t2
: CGAffineTransform) -> BoolObjective C
bool CGAffineTransformEqualToTransform ( CGAffineTransform t1, CGAffineTransform t2 );
Параметры
t1
Аффинное преобразование.
t2
Аффинное преобразование.
Возвращаемое значение
Возвраты
true
еслиt1
иt2
равны,false
иначе.Оператор импорта
Objective C
@import CoreGraphics;
Swift
import CoreGraphics
Доступность
Доступный в OS X v10.4 и позже.
-
Структура для содержания матрицы аффинного преобразования.
Объявление
Swift
struct CGAffineTransform { var a: CGFloat var b: CGFloat var c: CGFloat var d: CGFloat var tx: CGFloat var ty: CGFloat }
Поля
a
Запись в позиции [1,1] в матрице.
b
Запись в позиции [1,2] в матрице.
c
Запись в позиции [2,1] в матрице.
d
Запись в позиции [2,2] в матрице.
tx
Запись в позиции [3,1] в матрице.
ty
Запись в позиции [3,2] в матрице.
Обсуждение
В 2D Кварце матрица аффинного преобразования используется, чтобы повернуть, масштабировать, перевести, или скосить объекты, которые Вы рисуете в графическом контексте.
CGAffineTransform
тип обеспечивает функции для создания, конкатенации и применения аффинных преобразований.В Кварце аффинные преобразования представлены 3 3 матрицами:
Поскольку третий столбец всегда
(0,0,1)
,CGAffineTransform
структура данных содержит значения для только первых двух столбцов.Концептуально, Кварцевое аффинное преобразование умножает строковый вектор, представляющий каждую точку (x, y) в Вашем получении этой матрицей, производя вектор, представляющий соответствующую точку (x’, y’):
Учитывая 3 3 матрицами, Кварц использует следующие уравнения для преобразования точки (x, y) в одной системе координат в результирующую точку (x’, y’) в другой системе координат.
Матрица, таким образом, «соединяет» две системы координат — она указывает, как точки в одной системе координат отображаются на точки в другом.
Обратите внимание на то, что Вы не должны обычно создавать аффинные преобразования непосредственно. Если Вы хотите только нарисовать объект, масштабирующийся или поворачивающийся, например, не необходимо создать аффинное преобразование, чтобы сделать так. Самый прямой способ управлять Вашим получением — должен ли перемещением, масштабированием или вращением — вызвать функции
CGContextTranslateCTM
,CGContextScaleCTM
, илиCGContextRotateCTM
, соответственно. Необходимо обычно только создать аффинное преобразование, если Вы хотите снова использовать его позже.Доступность
Доступный в OS X v10.0 и позже.
-
Идентификационные данные преобразовывают.
Объявление
Swift
let CGAffineTransformIdentity: CGAffineTransform
Objective C
const CGAffineTransform CGAffineTransformIdentity;
Константы