Có một vài bước để vẽ thứ gì đó trong Cocoa.
Trước tiên, bạn cần một đường dẫn sẽ được sử dụng để xác định đối tượng mà bạn sắp vẽ. Hãy xem ở đây Drawing Fundamental Shapes để biết hướng dẫn về cách tạo đường dẫn trong Cocoa. Bạn sẽ quan tâm nhất đến việc gửi thông báo "appendBezierPathWithOvalInRect" tới một đối tượng "NSBezierPath", điều này có một hình chữ nhật bao quanh vòng tròn bạn muốn vẽ.
Mã này sẽ tạo ra một vòng tròn 10x10 tại tọa độ 10,10:
NSRect rect = NSMakeRect(10, 10, 10, 10);
NSBezierPath* circlePath = [NSBezierPath bezierPath];
[circlePath appendBezierPathWithOvalInRect: rect];
Một khi bạn có con đường của bạn, bạn muốn đặt màu cho bối cảnh bản vẽ hiện hành. Có hai màu, đột quỵ và tô màu; nét vẽ là đường viền của đường đi và tô màu là màu nội thất. Để đặt màu bạn gửi "set" thành đối tượng "NSColor".
này đặt đột quỵ sang màu đen và điền để đỏ:
[[NSColor blackColor] setStroke];
[[NSColor redColor] setFill];
Bây giờ bạn có con đường của bạn và bạn có màu sắc của bạn thiết lập chỉ cần điền đường dẫn và sau đó rút ra nó:
[path stroke];
[path fill];
Tất cả điều này sẽ cần phải được thực hiện trong một bối cảnh đồ họa như trong drawRect của một khung nhìn có lẽ.Tất cả điều này cùng với một bối cảnh đồ họa sẽ trông như thế này:
- (void)drawRect:(NSRect)rect
{
// Get the graphics context that we are currently executing under
NSGraphicsContext* gc = [NSGraphicsContext currentContext];
// Save the current graphics context settings
[gc saveGraphicsState];
// Set the color in the current graphics context for future draw operations
[[NSColor blackColor] setStroke];
[[NSColor redColor] setFill];
// Create our circle path
NSRect rect = NSMakeRect(10, 10, 10, 10);
NSBezierPath* circlePath = [NSBezierPath bezierPath];
[circlePath appendBezierPathWithOvalInRect: rect];
// Outline and fill the path
[circlePath stroke];
[circlePath fill];
// Restore the context to what it was before we messed with it
[gc restoreGraphicsState];
}
Hình như có thậm chí là a: bezierPathWithOvalInRect: Cảm ơn! – kdbdallas
Yup, đó là tính năng mới trong Leopard nếu tôi nhớ chính xác. Trước đó, một trong những điều đầu tiên của những người lập trình Cocoa mới (bao gồm cả bản thân mình) phải làm là định nghĩa một thể loại trong NSBezierPath để tạo ra một đường tròn hình tròn hoặc tròn. :) –