Tôi muốn tạo đối tượng UIImage từ ngữ cảnh đồ họa hiện tại. Cụ thể hơn, trường hợp sử dụng của tôi là chế độ xem mà người dùng có thể vẽ đường. Họ có thể rút dần. Sau khi hoàn thành, tôi muốn tạo một UIImage để đại diện cho bản vẽ của họ.Cách tạo UIImage từ ngữ cảnh đồ họa hiện tại?
Đây là những gì drawRect: trông giống như đối với tôi bây giờ:
- (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);
}
... nơi _pathArray là loại CFArrayRef, và được phổ biến mỗi khi touchesEnded: được gọi. Cũng lưu ý rằng drawRect: có thể được gọi nhiều lần, khi người dùng vẽ.
Khi người dùng hoàn tất, tôi muốn tạo đối tượng UIImage đại diện cho ngữ cảnh đồ họa. Có bất cứ đề nghị nào cho việc làm như thế này hả?
Cả hai câu trả lời dưới đây làm việc. Lưu ý rằng có một sự khác biệt về chức năng giữa hai yếu tố, đó là việc hiển thị lớp trong ngữ cảnh hình ảnh cũng sẽ hiển thị nền của lớp; gọi drawRect: trực tiếp không (trong trường hợp của tôi nó không quan trọng). Tôi sẽ sử dụng phương thức renderInContext của CALayer vì sự phức tạp với drawRect gọi: trực tiếp (Xem http://lists.apple.com/archives/Cocoa-dev/2002/Apr/msg01846.html để biết chi tiết). Cảm ơn! – figelwump