Iphone SDK сохранить рисунки без всего контекста - PullRequest
3 голосов
/ 03 октября 2011

Я хочу сделать снимок экрана моего приложения из приложения для iPhone. У меня белый фоновый вид, и на этом я рисую линии на слое этого вида, используя этот метод.

- (void)draw {
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSaveGState(context);
    if (self.fillColor) {
        [self.fillColor setFill];
        [self.path fill];
    }
    if (self.strokeColor) {
        [self.strokeColor setStroke];
        [self.path stroke];
    }

    CGContextRestoreGState(context);
}



- (void)drawRect:(CGRect)rect {
    // Drawing code.
    for (<Drawable> d in drawables) {
        [d draw];
    }
    [delegate drawTemporary];
}

Я использую методы делегата для рисования линий на слое. Это ссылка на проект, откуда я могу получить помощь. https://github.com/search?q=dudel&type=Everything&repo=&langOverride=&start_value=1

Теперь, когда я использую следующие контекстные методы для сохранения только чертежа, я успешно сохраняю его без этого белого фона.

drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();

Но когда я использую следующий метод Безье Пате, я не могу сохранить рисунок без его белого фона, Он сохраняет весь экран, то есть этот рисунок и его фон.

UIGraphicsBeginImageContext(self.view.bounds.size);
    [dudelView.layer renderInContext:UIGraphicsGetCurrentContext()];
    //UIImage *finishedPic = UIGraphicsGetImageFromCurrentImageContext();

Так что кто-нибудь может мне помочь, как я могу сохранить рисунок только здесь, в этом приложении.

Ответы [ 2 ]

0 голосов
/ 16 апреля 2012

Почему бы вам просто не сохранить массив drawables?Это все рисунки без основного изображения:)

0 голосов
/ 01 марта 2012

(Вы пометили это как связанный с MapKit, но не упомянули MapKit.)

Почему бы вам просто не разбить последовательность рисования на три части?

  1. Нарисуйте свои пути в контексте изображения и получите UIImage, как вы описали.
  2. Нарисуйте цвет фона.
  3. Нарисуйте UIImage.

Тогда вы можете использоватьUIImage для вашего "скриншота".

Я должен также отметить, что если only вещь, которую вы не хотите в своем захваченном UIImage, это цвет фона, вам лучше создатьUIImageView, устанавливая его цвет фона (-setBackgroundColor:) и устанавливая его изображение в качестве вашего UIImage.

UIImageView внутренне имеет ряд оптимизаций, которые позволяют ему отображать графику с гораздо более высокой производительностью, чем вы можете получитьпользовательская реализация -drawRect:.

...