Ho un pulsante Popup che contiene un elenco di colori. Di fronte al titolo del colore, ho bisogno di visualizzare una piccola scatola dello stesso colore (_ magari un'immagine dello stesso colore _). Così, stavo pensando di approccio, che se riesco a creare un oggetto NSImage utilizzando oggetto NSColor (che sarà già presente), quindi posso usare -(void) setImage:(NSImage *) menuImage
metodo NSMenuItem classe per visualizzare l'immagine in parte anteriore del titolo del colore nel pulsante popup.
Quindi, come posso realizzare la creazione di un oggetto NSImage usando NSColor?
Anche altri approcci per risolvere il problema sono ben accetti. :)Creazione di NSImage da NSColor
risposta
Metodo categoria semplice farà questo
@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 API deprecate
Grazie mille @Warren. – rsharma
'- setScalesWhenResized:' è ** deprecato **. * Questo metodo era correlato al comportamento di memorizzazione nella cache. In Mac OS X v10.6 e successive la memorizzazione delle immagini non è più necessaria e, di conseguenza, non è necessaria alcuna sostituzione. * –
Non ce ne siamo accorti. Questo è taglia/incolla da un vecchio codice. Grazie –
e la variante di estensione rapida di cui sopra:
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
}
}
Ecco uno Swift 3 versione dell'inizializzatore di convenienza delle risposte precedenti:
extension NSImage {
convenience init(color: NSColor, size: NSSize) {
self.init(size: size)
lockFocus()
color.drawSwatch(in: NSRect(origin: .zero, size: size))
unlockFocus()
}
}
Esempio di utilizzo:
let redSwatchImage = NSImage(color: .red, size: NSSize(width: 128, height: 128))
Sentitevi liberi di cambiare la semantica, se necessario :)
- 1. Creazione di un NSColor con valore RGB
- 2. Come ottenere NSImage da CGImageRef
- 3. ridimensionabileImageWithCapInsets per NSImage?
- 4. Ottieni pixel e colori da NSImage
- 5. NSImage e retina display confusione
- 6. NSImage non scala
- 7. Ridimensiona PDF NSImage OSX
- 8. Conversione di CIImage in NSImage
- 9. CVPixelBufferRef to NSImage
- 10. Swift NSImage to CGImage
- 11. Come ridimensionare NSImage in swift?
- 12. NSImage vs. CIImage vs. CGImage?
- 13. Esiste un metodo convenzionale per invertire i valori NSColor?
- 14. Anteprima di Mac Quick Look in un NSView o NSImage?
- 15. Swift: Non è possibile utilizzare NSImage .imageNamed
- 16. Dimensioni NSImage non reali con alcune immagini?
- 17. Render fuori campo WKWebView in NSImage
- 18. NSImage to NSData, then to UIImage
- 19. Trasformare un NSImage * in un CGImageRef?
- 20. Flip NSImage su entrambi gli assi
- 21. NSImage to NSData as PNG Swift
- 22. Creazione di notifiche da InstrumentationTestCase
- 23. Creazione di UIImage da CIImage
- 24. Scaling automatico di TIFF multipagina NSImage in un CALayer
- 25. Tinting a scala di grigi NSImage (o CIImage)
- 26. Memorizzazione di un NSImage in un Core Data modello
- 27. Creazione matrice da Window.location.hash
- 28. Creazione di una classe multipiattaforma iOS/OS X
- 29. Creazione di un'origine da un EventStream
- 30. Creazione di espressione lambda da una stringa
Questo dovrebbe essere quello che stai cercando: [http://stackoverflow.com/questions/ 990.976/how-to-create-a-color-1x1-UIImage-on-the-iphone-dinamicamente] [1] [1]: http://stackoverflow.com/questions/990976/how -to-create-a-color-1x1-UIImage-on-the-iphone-dy namically –