Farba Scroll Baru   zodpovězená otázka

Komponenty, Grafika, .NET

Dobrý deň,

Googlil som naozaj riadne dlhú dobu, ale odpoveď na moju otáyku som nenašiel, tak by som sa Vás chcel spýtať, či náhodou niekto z Vás netuší ako by sa dala zmeniť farba scrollbaru na forme

Za odpoveď Vám vopred veľmi pekne ďakujem,

Miroslav Pažitiak

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Obávám se, že to nebude nic jednoduchého. Pokud máte ve vlastnostech projektu vybráno (a to jistě máte) Enable XP Visual Styles, pak se ScrollBar renderuje s pomocí bitmap z aktuálního tématu systému. Pokud tuto vlastnost odškrtnete, ScrollBar se bude renderovat za použití systémových barev. V obou případech lze render scrollbaru ovlivnit pouze změnou stylu/barev systému Windows.

Jsem si jist, že pomocí Windown API toho dosáhnout půjde, ovšem snazší možná bude napsat si vlastní ovládací prvek se stejnou funkcionalitou.

PS: A na zamyšlenou: proč myslíte, že ve Windows Forms lze (co se týká vzhledu) nastavit takové minimum věcí? Proto, aby byla zachována konzistence UI. Uživatelé nemají rádi, když vypadá každá aplikace jinak a musí se každé přizpůsobovat. Buď renderujte vše kompletně sám, nebo nechte věci tak, jak jsou. Takováto polovičatá řešení jsou spíše ke vzteku vývojáře i uživatele. :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No, obecně platí věta o programátorské energii - čím více práce se narve do vlastního vzhledu prvků a přepsání renderování, tím méně práce se stráví funkčností aplikace a bohužel je to vidět.

Pokud chcete opravdu barvit scrollbar a máte k tomu nějaký rozumný důvod, máte v zásadě několik možností:

- napsat si vlastní komponentu nebo použít již existující (nedoporučuji, když komponentu píšete od začátku, i když se sebevíc snažíte, nikdy se nechová přesně jako ta systémová, na kterou je každý zvyklý)

- přes API ohnout stávající ScrollBar (určitě to jde, Internet Explorer to umí, viz takové ty šílené značky v HTML, které umožňovaly scrollbar obarvit)

- použít Windows Presentation Foundation - v zásadě to znamená předělat všechna okna a vše převést do WPF, které je hodně odlišné; je to rozhodně nejvíc práce a nutno zvážit, jestli se to vyplatí, ale tam jde naskinovat úplně všechno, takže pokud děláte aplikaci, kde je skinování nezbytné (což si ale nedovedu dost dobře představit), pak by se tato technologie mohla hodit.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Dobrý deň, ďakujem velmi pekne za rady.

Rozhodol som sa, že skúsim napísať vlastnú komponentu.

Dôvod, prečo potrebujem skinovať scrollbar je, že mám groupbox s bielym pozadím, kam potrebujem umiestniť scrollbar. Keď tam umiestním štandardný so system colors, dosť to škaredí celkový vizuálny dojem, tak by som chcel aspoň zmeniť back color toho scrollbaru.

Čo sa týka riešenia cez API, niečo som vygooglil, avšak nič z toho bohužial nefungovalo...program sa síce nezrútil, avšak ani farba scrollbaru sa nezmenila nech som skúšal hocičo :)

Každopádne Vám obom veľmi pekne ďakujem za rady, postrehy a prajem príjemný deň :)

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback