Chciałbym utworzyć obiekt UIImage z bieżącego kontekstu graficznego. Mówiąc dokładniej, mój przypadek użycia to widok, w którym użytkownik może narysować linie. Mogą rysować przyrostowo. Po ich zakończeniu chciałbym utworzyć UIImage do reprezentowania ich rysunku.Jak utworzyć UIImage z bieżącego kontekstu graficznego?
Oto co drawRect: wygląda jak dla mnie teraz:
- (void)drawRect:(CGRect)rect
{
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextSaveGState(c);
CGContextSetStrokeColorWithColor(c, [UIColor blackColor].CGColor);
CGContextSetLineWidth(c,1.5f);
for(CFIndex i = 0; i < CFArrayGetCount(_pathArray); i++)
{
CGPathRef path = CFArrayGetValueAtIndex(_pathArray, i);
CGContextAddPath(c, path);
}
CGContextStrokePath(c);
CGContextRestoreGState(c);
}
... gdzie _pathArray jest typu CFArrayRef i jest wypełniana za każdym razem touchesEnded: jest wywoływany. Zauważ również, że drawRect: może być wywoływany kilka razy, jak rysuje użytkownik.
Kiedy użytkownik skończy, chciałbym utworzyć obiekt UIImage, który reprezentuje kontekst graficzny. Wszelkie sugestie, jak to zrobić?
Obie odpowiedzi poniżej pracy. Zauważ, że istnieje różnica funkcjonalna między tymi dwoma, co oznacza, że renderowanie warstwy w kontekście obrazu spowoduje również renderowanie tła warstwy; Wywołanie drawRect: bezpośrednio nie (w moim przypadku to nie ma znaczenia). Przechodzę z podejściem renderowania CALayer ze względu na złożoność wywoływania drawRect: bezpośrednio (szczegóły na stronie http://lists.apple.com/archives/Cocoa-dev/2002/Apr/msg01846.html). Dzięki! – figelwump