Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Контекст, созданный с использованием UIGraphicsPushContext, не отображает визуализированные изображения.

Автор вопроса: LaNОтветов: 2

Я использую UIGraphicsPushContext для отправки контекста внутрь drawRect следующим образом:

- (void)drawRect:(CGRect)rect {
  // Create Bitmap Graphics Context
  UIContextRef ctxt = //blah blah;
  // Push the custom context in the graphics stack
  UIGraphicsPushContext(ctxt);
  // Draw Stuff
  // Get Image from custom context
}

Моя проблема в том, что изображение не отображается на экране (в представлении), но я могу подтвердить, что успешно нарисовал контекст, поскольку изображение, полученное из контекста, показывает изображение, похожее на то, что я намеревался нарисовать.

Чего я хотел добиться, так это заменить мой вызов UIGraphicsGetCurrentContext() (который работает и показывает изображение) и использовать (push) пользовательский контекст, который я могу использовать.

Я что-то упустил здесь? Спасибо!

  • Чего именно вы пытаетесь достичь? Если вы хотите рисовать в представлении, вы должны использовать UIGraphicsGetCurrentContext(). loomer 26.10.2010
  • Я хотел, чтобы он рисовался в пользовательском контексте, а не в контексте, данном мне из drawRect, чтобы я мог контролировать растровую память и повторно использовать один и тот же контекст. LaN 27.10.2010

objective-ccore-graphics

Ответы

Ответ 1 · loomer

Если вы хотите нарисовать изображение, а затем также показать его в представлении, вам нужно либо нарисовать его в представлении, а затем также изображение, либо сначала нарисовать изображение, а затем нарисовать это изображение в представлении. Чтобы реализовать второй вариант, сделайте что-то вроде этого:

- (void)drawRect:(CGRect)rect {
    // Create image
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef ctx = UIGraphicsGetCurrentContext();

    // Draw the image content using ctx

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    // Draw image on view
    [image drawAtPoint:CGPointZero];
}

Ответ 2 · youshunei

Я думаю, вы пропустите это:

- (void)drawRect:(CGRect)rect {
  // Create Bitmap Graphics Context
  UIContextRef ctxt = //blah blah;
  // Push the custom context in the graphics stack
  UIGraphicsPushContext(ctxt);
  // Draw Stuff
  // Get Image from custom context

  //blah blah

  UIGraphicsPopContext();
}

использование UIGraphicsPopContext() для восстановления предыдущего контекста

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы