У меня есть кнопка PopUp, которая содержит список цветов. Перед заголовком цвета мне нужно отобразить маленькую коробку того же цвета (_maybe изображение того же цвета _). Таким образом, я думал о том подходе, что если я могу создать объект NSImage используя NSColor объект (который уже будет присутствовать), то я могу использовать -(void) setImage:(NSImage *) menuImage
метод NSMenuItem класс для отображения изображения перед названием цвета в всплывающей кнопке.
Итак, как я могу создать создание объекта NSImage с помощью NSColor?
Любые другие подходы к решению проблемы также приветствуются. :)Создание NSImage от NSColor
ответ
Простой метод категории будет делать это
@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] удалить осуждается API
Большое спасибо @Warren. – rsharma
'- setScalesWhenResized:' is ** устарело **. * Этот метод был связан с поведением кэширования. В Mac OS X v10.6 и более поздних версиях кеширования больше не требуется, и в результате нет необходимости в замене. * –
Не понял. Это вырезать/вставить из старого кода. Thx –
И стремительный вариант продолжения с выше:
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
}
}
Вот Swift 3 версии инициализатора удобного использования предыдущих ответов:
extension NSImage {
convenience init(color: NSColor, size: NSSize) {
self.init(size: size)
lockFocus()
color.drawSwatch(in: NSRect(origin: .zero, size: size))
unlockFocus()
}
}
Пример использования:
let redSwatchImage = NSImage(color: .red, size: NSSize(width: 128, height: 128))
Вы можете изменить семантику по мере необходимости :)
- 1. Получить NSImage от CIFilter "CIRadialGradient"
- 2. Значения RGB от NSColor
- 3. Создание NSColor с RGB значением
- 4. сделать NSGradient от данного NSColor
- 5. NSImage (от icns) медленная живопись
- 6. Создание NSImage из растровых данных
- 7. Создание NSImage из-за NSView
- 8. Очистка альфа-канала NSImage
- 9. Получение шестнадцатеричного значения от NSColor в какао?
- 10. Пользовательский NSColor?
- 11. Как получить дату от NSImage
- 12. рисунок на NSImage
- 13. расчет NSColor RGB цвет
- 14. sRGB to NSColor
- 15. Создание NSImage из загруженных NSData в Swift
- 16. Какао: Прочитать пиксельный цвет NSImage
- 17. Преобразование NSGradient в NSColor
- 18. NSGradient в NSColor
- 19. [NSColorWell setColor: NSColor]
- 20. NSColor Core Foundation коллега?
- 21. Получить NSImage от NSTextField в Swift
- 22. Получите пиксели и цвета от NSImage
- 23. Как получить cgcolor из nscolor с рисунком с использованием swift?
- 24. Настройка цвета при рисовании в NSImage
- 25. NSImage colorWithPatternImage: как же вырезать изображения сверху?
- 26. NSImage + Прозрачность?
- 27. Перетащите/NSImage
- 28. Прозрачность NSImage
- 29. NSImage rotation
- 30. Печать NSImage
Это должно быть то, что вы ищете: [http://stackoverflow.com/questions/ 990976/как к Create-A-окрашенную-1x1-UIImage-на-iphone-динамически] [1] [1]: http://stackoverflow.com/questions/990976/how -в-Create-A-окрашенную-1x1-UIImage-на-iphone-ау namically –