Cuneyt Ozdas Forum
Cuneyt Ozdas Forum
Home | Profile | Register | Active Topics | Members | Search | FAQ
Username:
Password:
Save Password
Forgot your Password?

 All Forums
 Türkçe - Genel
 Diger
 GDI: Okunabilirligin arttirilmasi için renk hesabi
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

alipolatolu
Starting Member

Turkey
9 Posts

Posted - 08/04/2004 :  13:48:19  Show Profile  Visit alipolatolu's Homepage  Reply with Quote
Selamlar;

Ben windows altinda GDI kullanarak bir program gelistiriyorum. Programda form üzerine çesitli resimler ve yazilar basip kullanicinin bilgilendirilmesini sagliyorum. Programin özellikleri arasinda formun arkaplan renginin degistirilmesi de var. Fakat renk degistiginde de form üzerindeki yazilarin okunabilirliginin daha iyi olmasi için text rengini form arka plan renginin tersi (invert) olarak belirliyorum. Buraya kadar bir problemim yok, Fakat kullanici Gri ( RGB(128,128,128) ) veya bu renge yakin tonlar seçtiginde invert islemi ayni renk bilgisini döndürdügünden yazilar görünmez hale geliyor. Bu konuda bir algoritma bilen var mi? yardimci olursaniz sevinirim.

Sevgiler.

Admin
Forum Admin

Turkey
649 Posts

Posted - 08/04/2004 :  18:28:28  Show Profile  Visit Admin's Homepage  Reply with Quote
Polat Selam,
128,128,128 gri RGB küpünün tam ortasinda oldugu için simetri isleminde (invert) etkilenmeden kaliyor. Benzer sekilde en sik kullanilan binary XOR islemi de 128'i (1000 0000) 127'ye (0111 1111) map edecegi için sorunlu.

Bence renk uyumunu falan isin içine sokmamak için rengin luminansina bakip ona göre yaziyi siyah ya da beyaz yapmak en iyisi. Yani:


fr=fg=fb=(br+bg+bb<3*128) ? 255 : 0;

fx : foreground rengi
bx : background rengi


Ama istersen r, g ve b'den en küçük olani 255, en büyük olani da 0 yapacak, digerini de ters çevirecek bir mantik da kullanabilirsin. Yine de gri tam ortada oldugu için bir sekilde (en azindan siyah ya da beyaz) olasi renklerden birisine rasgele karar vermen lazim.

/Cuneyt
Go to Top of Page

Admin
Forum Admin

Turkey
649 Posts

Posted - 08/04/2004 :  18:41:35  Show Profile  Visit Admin's Homepage  Reply with Quote
haa bu da simdi aklima geldi:

eger siyah beyazdan hosnut degilsen, renkli olsun istiyorsan tüm kanallari 128 birim uzaga tasimak da bir çözüm olabilir. Burada kanal kontrastlari hep %50 olacaktir ama luminans kontrasti ayni kalabilir. Yani siyah beyaz en az %50 konstrast saglarken bu teknik en fazla %50 kontrast verecektir.


  int fr = (br+128)&0xFF;
  int fg = (bg+128)&0xFF;
  int fb = (bb+128)&0xFF;

/Cuneyt
Go to Top of Page

alipolatolu
Starting Member

Turkey
9 Posts

Posted - 08/04/2004 :  20:39:47  Show Profile  Visit alipolatolu's Homepage  Reply with Quote
Tekrar selamlar cüney bey,

Ben ikinci önerdiginiz renk kanallarini 128 birim ileri tasima teknigini uyguladim, çok güzel ve tam istedigim gibi bir sonuç elde ettim. Kontrast çok iyi, devamli yüksek kaliyor ve yazilar rahatlikla okunabiliyor.

Çok tesekkür ederim, sevgiler...

Polat
Go to Top of Page

Admin
Forum Admin

Turkey
649 Posts

Posted - 09/04/2004 :  10:01:18  Show Profile  Visit Admin's Homepage  Reply with Quote
Rica ederim,
Literatürde bu probleme güzel bir çözüm var mi bilmiyorum, denk gelirsem paylasirim. Uydurdugum yöntemin ise yaramasina sevindim; ama yine de tüm renkleri test et derim, bazi renk kombinasyonlari her kanalda yüksek kontrasta sahip olmasina ragmen görsel olarak düsük kontrasta sahip olabilir. Ayrica renk körlerinin de renkleri degisik parlaklikta gördügünü unutmamak lazim, UI tasarlarken dikkat edilmesi gereken konulardan birisinin de hiç degilse hafif özürlü insanlara zorluk çikartmamasi oldugu söylenir.

Aklima ya da karsima daha iyi bir çözüm gelirse haber ederim.

Kolay gelsin.

/Cuneyt
Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
Cuneyt Ozdas Forum © 2000 - 2003 Cuneyt Ozdas Go To Top Of Page
This page was generated in 0.06 seconds. Snitz Forums 2000