Jump to content

Windows Sistem Renklerini Değiştirme


wmismail

Recommended Posts

Kodsal yolla windowsun sistem renklerini değiştirebilmek için user32.dll API’si ve ona ait SetSysColors fonksiyonu kullanılmaktadır. Windowsdaki mevcut tanımlanmış renklerin kodlarını da aynı API’den GetSysColor ile alabiliriz. Bu fonksiyonları projelerimizde kullanabilmek için aşağıdaki gibi tanımlıyoruz.C# için;

[DllImport(“user32.dll”)]

static extern bool SetSysColors(int cElements, int[] lpaElements, int[] lpaRgbValues);

[DllImport(“user32.dll”)]

static extern uint GetSysColor(int nIndex);

VB.NET içinse;

Declare Function SetSysColors Lib “user32″ (ByVal nChanges As Integer, ByRef lpSysColor As Integer, ByRef lpColorValues As Integer) As Long

Declare Function GetSysColor Lib “user32″ (ByVal nIndex As Long) As Long

Set işlemi yapılırken verilen parametreler sıra ile değiştirilmek istenen renk sayısı, değiştirilecek olan renk dizisi, ve bu renklerin yeni değerleridir. Renk bilgisini ise sabit tanımlanmış değişkenlerden verebilmekteyiz. Ve bunlar sıra ile şunlardır:

COLOR_SCROLLBAR – 0 : Scrollbar rengi

COLOR_BACKGROUND – 1 : Masaüstü rengi

COLOR_DESKTOP – 1 : Masaüstü rengi

COLOR_ACTIVECAPTION – 2 : Aktif pencere başlığında sol taraftaki renk (gradient aktif ise)

COLOR_INACTIVECAPTION – 3 : Pasif pencere(ler)in başlığında sol taraftaki renk (gradient aktif ise)

COLOR_MENU – 4 : Menü arkaplan rengi

COLOR_WINDOW – 5 : Pencere arkaplan rengi

COLOR_WINDOWFRAME – 6 : Pencere çerçevesinin rengi

COLOR_MENUTEXT – 7 : Menülerdeki yazı rengi

COLOR_WINDOWTEXT – 8 : Penceredeki yazı rengi

COLOR_CAPTIONTEXT – 9 : Pencere başlık yazısının rengi

COLOR_ACTIVEBORDER – 10 : Aktif pencerenin çerçeve rengi

COLOR_INACTIVEBORDER – 11 : Pasit pencere(ler)in çerçeve rengi

COLOR_APPWORKSPACE – 12 : MDI uygulamaların arkaplan rengi

COLOR_HIGHLIGHT – 13 : Seçili alan (SelectedItem) arkaplan rengi

COLOR_HIGHLIGHTTEXT – 14 : Seçili alan yazısının rengi

COLOR_BTNFACE - 15 : 3D nesnelerin görünen yüzünün ve dialag boxların arkaplan rengi

COLOR_3DFACE –15 : 3D nesnelerin görünen yüzünün ve dialag boxların arkaplan rengi

COLOR_BTNSHADOW – 16 : 3D nesneler için gölge rengi

COLOR_3DSHADOW – 16 : 3D nesneler için gölge rengi

COLOR_GRAYTEXT - 17 : Gri (disable edilmiş) yazı rengi

COLOR_BTNTEXT - 18 : Buton üzerindeki yazıların rengi

COLOR_INACTIVECAPTIONTEXT - 19 : Pasif başlıklardaki yazının rengi

COLOR_BTNHIGHLIGHT – 20 : Butonun 3D isaretlenmesi rengi

COLOR_3DHIGHLIGHT – 20 : 3D nesneler için seçim rengi

COLOR_3DHILIGHT – 20 : 3D nesneler için seçim rengi

COLOR_3DDKSHADOW – 21 : 3D nesneler için koyu gölge rengi

COLOR_3DLIGHT – 22 : 3D nesneler için açık gölge rengi

COLOR_INFOTEXT – 23 : Tooltiplerin yazı rengi

COLOR_INFOBK – 24 : Tooltiplerin arka plan rengi

COLOR_HOTLIGHT – 26 : Tıklanmış hyperlinklerin rengi

COLOR_GRADIENTACTIVECAPTION – 27 : Aktif pencere başlığında sol taraftaki renk (gradient aktif ise). Gradient özellikleri için SPI_GETGRADIENTCAPTIONS fonksiyonu kullanılabilir.

COLOR_GRADIENTINACTIVECAPTION – 28 : Pasif pencere(ler)in sağ taraftaki renk (gradient aktif ise)

COLOR_MENUHILIGHT – 29 : Flat menüde seçili alan rengi (Windows 2000’de desteklenmemektedir.)

COLOR_MENUBAR – 30 : Flat menü çubuğunun arka plan rengi (Windows 2000’de destekelenmemektedir.)

Kod içerisinden yukarıdaki sabitlerden yararlanılarak mevcut renk değerleri okunanabilir (get) ve ya değiştirilebilir (set). Örneğin grafik uygulamalarımızda windows renkleriyle ile çizim-yazı vs yapmamız gerekebilir. Bu tip durumlarda GetSysColor ile istediğimiz renk bilgisini elde ebiliriz. Mesela masaüstü rengini şöyle alabiliriz:

uint a = GetSysColor(1); //uint a = GetSysColor(COLOR_DESKTOP);

İlave olarak .NET ortamından windows renklerine ulaşmak için SystemColors sınıfından da yararlanabiliriz. Ancak bu sınıftan sadece okuma yapabildiğimiz için bu renkleri değiştirmek istersek SetSysColors fonksiyonunu kullanmamız gerekecektir. (Yapılan değişiklik windows genelinde etkili olacaktır.) Örneğin seçili alan (selecteditem) rengini şöyle değiştirebiliriz:

SetSysColors(1, COLOR_HIGHLIGHT, RGB(0, 100, 0)); //SetSysColors(1,13,RGB(0,100,0));

RGB kodları içinde RGB-Hexadecimal renk tablosuna bakılabilir.

Ergün YÜCEL

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...