Tôi có một bộ sưu tập các đối tượng mô tả tên hình ảnh, kích thước của nó và vị trí X/Y của nó. Bộ sưu tập được sắp xếp theo "lớp", vì vậy tôi có thể tổng hợp các hình ảnh trong một loại thuật toán của họa sĩ.Làm cách nào để tổng hợp một số hình ảnh NSImage thành một hình ảnh lớn?
Từ đó, tôi có thể xác định hình chữ nhật cần thiết để giữ tất cả các hình ảnh, vì vậy bây giờ những gì tôi muốn làm là:
- Tạo một số loại đệm để giữ kết quả (The NS tương đương với những gì iPhoneOS gọi UIGraphicsContext.)
- Vẽ tất cả hình ảnh vào bộ đệm.
- Tạo hình ảnh NSImage mới ra khỏi kết quả tổng hợp của bộ đệm.
Trong iPhoneOS, đây là đoạn code mà làm những gì tôi muốn:
UIGraphicsBeginImageContext (woSize);
CGContextRef ctx = UIGraphicsGetCurrentContext();
[[UIColor clearColor] set];
CGContextFillRect(ctx, NSMakeRect(0, 0, woSize.width, woSize.height));
// draw my various images, here.
// i.e. Various repetitions of [myImage drawAtPoint:somePoint];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Những gì tôi đang tìm kiếm là làm thế nào để làm điều đó trong Desktop Cocoa/NS.
Cảm ơn!
Tài liệu nói Không được chấp nhận trong Snow-Leopard. "Quan trọng: Nếu bạn đang viết mã mới hoặc cập nhật mã cũ, bạn nên tránh sử dụng phương pháp này. Thay vào đó, bạn nên sử dụng phương thức drawAtPoint: fromRect: operation: fraction: hoặc drawInRect: fromRect: operation: fraction: để vẽ hình ảnh. Mặc dù bản thân phương thức này không bị phản đối, nhưng hành vi mà nó cung cấp không được khuyến cáo sử dụng chung. " Nhưng tôi sẽ thử drawAtPoint và nếu nó hoạt động, hãy cung cấp cho bạn dấu kiểm đúng câu trả lời. (Bạn có thể muốn chỉnh sửa câu trả lời của mình.) Cảm ơn! – Olie
Cuộc gọi tốt. Đã chỉnh sửa. Lý do, tôi giả định, là vẽ kiểm tra nguồn rect và composite không. Điều này là tốt miễn là bạn chắc chắn rằng bạn đang đi qua một rect hợp lý (và nó nhanh hơn một chút, quá) nhưng nó thực sự là an toàn hơn để sử dụng vẽ. – andyvn22
Vâng, lockFocus là thứ tôi đã mất tích (một cái tên trực quan như vậy, tôi không thể tưởng tượng được làm thế nào tôi không nghĩ đến việc kiểm tra tài liệu cho điều đó!)) Cảm ơn! – Olie