Jak utworzyć UIImage na podstawie bieżącego kontekstu graficznego?
Chciałbym utworzyć obiekt UIImage na podstawie bieżącego kontekstu graficznego. Mówiąc dokładniej, moim przypadkiem użycia jest widok, w którym użytkownik może rysować linie. Mogą malować stopniowo. Po zakończeniu chciałbym stworzyć UIImage, który będzie reprezentował ich rysunek.
Oto jak drawRect: wygląda mi teraz:
- (void)drawRect:(CGRect)rect... gdzie _pathArray jest typu CFArrayRef i jest zapełniane za każdym razem, gdy wywoływana jest funkcja touchesEnded:. Zwróć również uwagę, że drawRect: może być wywoływany wiele razy, gdy użytkownik rysuje.
{
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);
}
Gdy użytkownik skończy, chciałbym utworzyć obiekt UIImage, który reprezentuje kontekst graficzny. Jakieś sugestie, jak to zrobić?
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
3 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Jeśli chcesz zapisać obok niego , pamiętaj, aby go zapisać!
EDYCJA: Jeśli chcesz zachować wynik drawRect w obrazie, po prostu utwórz kontekst bitmapy za pomocą i wywołaj drawRect z nowym powiązaniem kontekstowym. Jest to łatwiejsze do zrobienia niż przechowywanie CGContextRef, z którym pracujesz w drawRect, ponieważ ten kontekst może nie mieć skojarzonych z nim informacji bitmapowych.
Możesz także zastosować podejście wspomniane przez Kelvina. Jeśli chcesz utworzyć obraz z bardziej złożonego widoku, takiego jak UIWebView, jego metoda jest szybsza. Rysowanie warstwy widoku nie wymaga aktualizacji warstwy, wystarczy przenieść dane obrazu z jednego bufora do drugiego!
Anonimowy użytkownik
Potwierdzenie od:
Szybka wersja