2010-11-25 17 views
5

Kısık görüntüde kesin bir ses tonuyla ilgili gerçekten telaşlı değilsem, bu şekilde hafifçe soluklaşan bir NSImage çizmenin hızlı ve kirli bir yolu var mı ? İnternette arama yaptım ve aradığım şeyi gerçekten bulamıyorum (ancak grafik ve doğru teknik terimleri anlamak söz konusu olduğunda çok iyi değilim). Xcode yukarıdaki gibi simgeleri (yani belge kaydedilmemiş değişiklikler var) karartma olarak Bir NSImage çizmenin en kolay yolu (devre dışı bırakılmış bir görünüm gibi)

Non-dimmed Dimmed

Aslında aynı kullanım örneği için simgeler karartma ediyorum.

cevap

16

Bu benim için çalışıyor:

NSImage *iconImage = [NSImage imageNamed:@"Icon"]; 
NSSize iconSize = [iconImage size]; 
NSRect iconRect = NSMakeRect(0.0, 0.0, iconSize.width, iconSize.height); 
[iconImage lockFocus]; 
[[NSColor colorWithCalibratedWhite:0.0 alpha:0.33] set]; 
NSRectFillUsingOperation(iconRect, NSCompositeSourceAtop); 
[iconImage unlockFocus]; 
[iconImage drawInRect:iconRect 
       fromRect:iconRect 
      operation:NSCompositeSourceOver 
       fraction:0.75]; 

Temelde ben gerçek simgesi ( NSCompositeSourceAtop ile maskeleme) üstünde% 33 opacity ile siyah tabakayı ekliyorum. Ve sonra karartılmış simgeyi% 75 opaklıkla çiziyorum.

[Düzenleme: Nikolai Ruhe önerileri doğrultusunda NSRectFillUsingOperation (...) kullanarak geçici siyah görüntünün kurtuldum] Eğer biraz sert oldu downvoted Kim

+0

. Bu işe yarıyor. Her kim düşerse, lütfen iyi olanı yap ve neden yorum yap lütfen? :) – d11wtq

+1

'iconImage' üstüne çizmek için' NSRectFillUsingOperation' kullanarak 'blackImage'den kurtulabilirsiniz. –

+0

Sadece kendimi düşünüyordum. Sadece, resmin çekildiği rect'in üzerine yarı-opak bir karanlık rect çizin. Temelde aynı şeyi yapmalıdır. Refactor hakkında. – d11wtq

İlgili konular