Подтвердить что ты не робот

IOS "текущий графический контекст" - что это такое

Когда я рисую линии и фигуры и т.д., я получаю "текущий графический контекст" в iOS.

Что именно представляет собой "текущий графический контекст" - я ищу описание 30 000 футов.

Сейчас я просто копирую и вставляю код пользовательского интерфейса, не совсем уверен, что он делает.

4b9b3361

Ответ 1

ОС требуется место для сохранения информации, например, состояния чертежа, которую вы не хотите указывать в каждой отдельной команде рисования CG, например, в растровом изображении или представлении для рисования, масштабировании или другом преобразовании для использования, последний цвет, который вы указали, и т.д.

Контекст сообщает каждому вызову CG, где можно найти все это "материал" для вашего текущего вызова рисования. Дайте другой контекст тому же самому призыву на рисование, и этот вызов может быть обращен к другому растровому изображению в совершенно другом представлении с другим цветом, другим масштабом и т.д.

Ответ 2

Графический контекст - это место, где хранится информация о состоянии чертежа. Это включает в себя цвет заливки, цвет штриха, ширину линии, шаблон линии, правило обмотки, маску, текущий путь, уровни прозрачности, преобразование, преобразование текста и т.д. При использовании вызовов CoreGraphics вы указываете контекст, который будет использоваться для каждой отдельной функции. Это означает, что вы можете использовать сразу несколько контекстов, хотя обычно вы используете их только один. На уровне UIKit существует концепция "текущего" графического контекста, который является графическим контекстом, который используется всеми вызовами рисования на уровне UIKit (например, -[UIColor set] или UIBezierPath). Текущий контекст хранится в стек контекстов, поэтому вы можете создать новый контекст для некоторого чертежа, а затем, когда вы закончите с ним, будет восстановлен предыдущий контекст. Как правило, вы получаете контекст бесплатно внутри -[UIView drawRect:] внутри методов, связанных с отображением CALayer, но не иначе.

Раньше было, что "текущий" контекст был глобальным состоянием приложения в целом, и поэтому было небезопасно касаться вне основного потока. Начиная с iOS 4.0 (я считаю) это стало поточно-локальным состоянием, а методы рисования на уровне UIKit стали безопасными для использования в потоках фона.

Ответ 3

В основном это класс в платформе (iOS, Android, JavaME и многие другие), который обеспечивает доступ ко всем возможностям рисования и отображения, предоставленным для этой платформы. Конечно, это немного отличается для разных платформ, но это описание 30 000 футов:)