Renkleri tonuna göre sıralamak istiyorsunuz, öyle görünüyor. Bunu yapmak için, bir renk tonunu hesaplamanız gerekir ve Wpf System.Media.Color
yapısını sizin için yapacak özellikleri içermez.
İki seçenek var:
- el tonu hesaplayabilir. Bu gerçekten zor değil, ama dağınık: bir sürü sonra-sonra ifadeler. Örnek kod bunu can be found on devx yapıyor. Bu daha fazla iş ve daha az okunabilir, ama muhtemelen daha hızlı seçenek.
System.Drawing.Color.GetHue
'u kullanabilirsiniz. Eski winform-dönemi System.Drawing
renk yapısı tonu hesaplamayı destekliyor. Bu kodu gerçekten basit yapar; System.Drawing.Color.FromArgb(col.R, col.G, col.B).GetHue()
gibi bir şey yeterli olacak - güzel ve kısa! Ancak, aynı isimlerle iki yapı ile uğraşacağınız anlamına gelir ve tabii ki System.Drawing.dll
derlemine ro referansı gerekir. Bu tür metotlar yavaş olma eğilimindedir ve pek çok akıl sağlığı kontrolü yapar, bu yüzden performans kritikse, bu durum daha az çekici olacaktır.
Renk alanı üç boyutludur. Bir yöne göre sıralama yapabilmenize rağmen (burada ton gibi), sonuçtaki renk sıralaması sadece diğer iki yönü (HSB modelindeki doygunluk ve parlaklık) sabit tutarsanız sürekli görünür. Bu nedenle çoğu renk seçici, iki boyutlu bir gösterim seçer, ancak o zaman bile, sürekli bir degradeyi korumak için belirli bir renk seçici içinde bir boyut sabit bırakmanız gerekir.
Tek boyutlu bir sırada sürekli olarak üç boyutlu (renkli) bir alanı temsil etmek imkansızdır. Tam olarak ne elde etmeye çalışıyorsun? –
İyi teşekkürler. Tam olarak bilmem gereken şey bu. Aksini düşündüm. – NVM