Mantıksal Palet
mantıksal palet, bir uygulamanın oluşturduğu ve belirli bir cihaz bağlamıyla ilişkilendirir. Mantıksal paletler, uygulamaların kendi gereksinimlerini karşılayan renkleri tanımlamasına ve kullanmasına olanak tanır. Uygulamalar, bunları ayrı cihaz bağlamları için kullanarak veya tek bir cihaz bağlamı için bunlar arasında geçiş yaparak istediğiniz sayıda mantıksal palet oluşturabilir. Bir uygulamanın oluşturabileceği en fazla palet sayısı, sistemin kaynaklarına bağlıdır.
Uygulama, createPaletteişlevini kullanarakbir mantıksal palet oluşturur. Uygulama, her giriş için girdi sayısını ve renk değerlerini belirten bir LOGPALETTE yapısını doldurur ve ardından yapıyı createPalette geçirir. İşlev, paleti tanımlamak için uygulamanın sonraki tüm işlemlerde kullandığı bir palet tutamacını döndürür. Mantıksal paletteki renkleri kullanmak için uygulama, SelectPalette işlevini kullanarak paleti bir cihaz bağlamında seçer ve ardından RealizePalette işlevini kullanarak paleti hayata geçirir. Paletteki renkler, mantıksal palet gerçekleşir gerçekleşmez kullanılabilir.
Bir uygulama, mantıksal paletlerinin boyutunu yalnızca gerekli renkleri temsil edecek kadar girişle sınırlamalıdır. Uygulamalar, cihaza bağımlı bir değer olan maksimum palet boyutundan daha büyük mantıksal paletler oluşturamaz. Uygulamalar, SIZEPALETTE değerini almak için GetDeviceCapsişlevinikullanarak en büyük boyutu elde edebilir.
Bir uygulama, mantıksal paletteki belirli bir giriş için herhangi bir renk değeri belirtese de, verilen cihaz tarafından tüm renkler oluşturulamayabilir. Sistem hangi renklerin desteklendiğine ilişkin bir yol sağlamaz, ancak uygulama cihazın renk çözünürlüğünü alarak bu renklerin toplam sayısını bulabilir. Piksel başına renk bitlerinde belirtilen renk çözünürlüğü, getDeviceCapsişlevi tarafından döndürülen COLORRES değerine eşit. Renk çözünürlüğü 18 olan bir cihazın 262.144 olası rengi vardır. Bir uygulama desteklenmeyen bir renk isterse sistem uygun bir yaklaşık değer seçer.
Mantıksal palet oluşturulduktan sonra, bir uygulama SetPaletteEntriesişlevinikullanarak paletteki renkleri değiştirebilir. Mantıksal palet seçilir ve fark edilirse, paletin değiştirilmesi görüntülenen renkleri hemen etkilemez. Uygulamanın renkleri güncelleştirmek için UnrealizeObjectve RealizePaletteişlevlerinigerekir. Bazı durumlarda, renklerin tam olarak istendiği gibi güncelleştirildiğinden emin olmak için uygulamanın mantıksal paletin seçimini kaldırması, yeniden oluşturması, seçmesi ve gerçekleştirmesi gerekebilir. Bir uygulama bir mantıksal paleti birden fazla cihaz bağlamında seçerse, mantıksal palete yapılan değişiklikler, seçildiği tüm cihaz bağlamlarını etkiler.
Bir uygulama, ResizePalette işlevini kullanarak mantıksal paletteki girdi sayısını değiştirebilir. Uygulama boyutu küçültürse, kalan girişler değişmez. Uygulama boyutu genişletirse, sistem her yeni girişin rengini siyah (0, 0, 0) ve bayrağını sıfır olarak ayarlar.
Bir uygulama, GetPaletteEntries işlevini kullanarak belirli bir mantıksal paletteki girdilerin renk ve bayrak değerlerini alabilir. Uygulama, getNearestPaletteIndex işlevini kullanarak belirli bir renk değeriyle en yakın eşleşen belirli bir mantıksal paletteki girdinin dizinini alabilir.
Bir uygulamanın mantıksal palete ihtiyacı kalmadığında, DeleteObject işlevini kullanarak bunu silebilir. Uygulama, paleti silmeden önce mantıksal paletin artık bir cihaz bağlamında seçilmediğinden emin olmalıdır.