Tôi có một nút PopUp có chứa danh sách màu. Ở phía trước của tiêu đề màu, tôi cần hiển thị một hộp nhỏ cùng màu (_maybe một hình ảnh có cùng màu _). Vì vậy, tôi đã nghĩ đến việc tiếp cận này, rằng nếu tôi có thể tạo ra một đối tượng NSImage sử dụng NSColor đối tượng (mà sẽ thể đã có mặt), sau đó tôi có thể sử dụng -(void) setImage:(NSImage *) menuImage
phương pháp NSMenuItem lớp để hiển thị các hình ảnh trong mặt trước của tiêu đề màu trong nút bật lên.
Vì vậy, Làm thế nào tôi có thể hoàn thành việc tạo một đối tượng NSImage bằng cách sử dụng NSColor?
Bất kỳ cách tiếp cận nào khác để giải quyết vấn đề cũng được hoan nghênh. :)Tạo NSImage từ NSColor
Trả lời
Một phương pháp loại đơn giản sẽ làm điều này
@interface NSImage (ImageAdditions)
+(NSImage *)swatchWithColor:(NSColor *)color size:(NSSize)size;
@end
@implementation NSImage (ImageAdditions)
+(NSImage *)swatchWithColor:(NSColor *)color size:(NSSize)size
{
NSImage *image = [[[NSImage alloc] initWithSize:size] autorelease];
[image lockFocus];
[color drawSwatchInRect:NSMakeRect(0, 0, size.width, size.height)];
[image unlockFocus];
return image;
}
@end
[EDIT] remove phản API
Cảm ơn rất nhiều @ Warren. – rsharma
'- setScalesWhenResized:' is ** deprecated **. * Phương pháp này có liên quan đến hành vi bộ nhớ đệm. Trong Mac OS X v10.6 và bộ nhớ đệm hình ảnh sau này không còn cần thiết và kết quả là không cần thay thế. * –
Không nhận ra. Điều này được cắt/dán từ một số mã cũ. Thx –
Và các biến thể mở rộng nhanh chóng của trên:
import Cocoa
extension NSImage {
class func swatchWithColor(color: NSColor, size: NSSize) -> NSImage {
let image = NSImage(size: size)
image.lockFocus()
color.drawSwatchInRect(NSMakeRect(0, 0, size.width, size.height))
image.unlockFocus()
return image
}
}
Dưới đây là một Swift 3 phiên bản khởi tạo tiện lợi của các câu trả lời trước:
extension NSImage {
convenience init(color: NSColor, size: NSSize) {
self.init(size: size)
lockFocus()
color.drawSwatch(in: NSRect(origin: .zero, size: size))
unlockFocus()
}
}
dụ Cách sử dụng:
let redSwatchImage = NSImage(color: .red, size: NSSize(width: 128, height: 128))
Hãy thoải mái để thay đổi ngữ nghĩa khi cần thiết :)
- 1. Nhận NSImage từ NSProgressIndicator
- 2. Nhận NSImage từ CGImageRef
- 3. NSImage to Base64
- 4. resizableImageWithCapInsets for NSImage?
- 5. Nhận điểm ảnh và màu sắc từ NSImage
- 6. NSImage to NSBitmapImageRep
- 7. CVPixelBufferRef tới NSImage
- 8. NSImage không quy mô
- 9. Chuyển đổi CIImage thành NSImage
- 10. Flip NSImage trên cả hai trục
- 11. NSImage và võng mạc trưng bày nhầm lẫn
- 12. NSImage so với CIImage so với CGImage?
- 13. Cách đọc hình ảnh PNG tới NSImage
- 14. NSImage to cv :: Mat và ngược lại
- 15. Cách tạo biểu diễn 8-, 4 và 1 bit của NSImage
- 16. Xem trước nhanh trên Mac trong NSView hoặc NSImage?
- 17. Đang cố gắng để biến [NSImage imageNamed: NSImageNameUser] vào NSData
- 18. Cách lưu tập tin PNG từ NSImage (các vấn đề về võng mạc)
- 19. Lưu trữ một NSImage trong Mô hình Dữ liệu Chính
- 20. Sự khác nhau giữa NSImage và UIImage là gì?
- 21. Tạo hình ảnh được chia tỷ lệ từ NSView
- 22. 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?
- 23. Làm cách nào để tải biểu tượng NSImage của biểu tượng cho ứng dụng của tôi?
- 24. Tự động chia tỷ lệ của TIFF NSImage trong một CALayer
- 25. Cách tải NSImage của biểu tượng thư mục chung trên OS X 10.5 và 10.6
- 26. Kích thước NSImage không phải kích thước thật với một số hình ảnh?
- 27. Tạo DataContract từ XSD
- 28. Tạo UIView từ NIB
- 29. Tạo Bảng từ Xem
- 30. Tạo UIImage từ CIImage
này nên được những gì bạn đang tìm kiếm: [http://stackoverflow.com/questions/ 990.976/how-to-tạo-một-màu-1x1-UIImage-on-the-iphone-động] [1] [1]: http://stackoverflow.com/questions/990976/how -to-tạo-a-màu-1x1-uiimage-on-the-iphone-dy tên là –