Acum, daca tot am implementat tot ce mi-a trecut prin cap, am inceput sa ma joc. Prima problema de care m-am lovit a fost "shaped window" (de fapt, in Concept poate fi shaped-anything). Problema era ca trebuia setat in bitmap in format xpm. Foarte frumos, doar ca pe windows e relativ dificil sa gasesti unelte cu care sa faci xpm-uri. Atunci, am zis asa: setezi un png cu transparenta ca mask. Unde ai bit transparent, nu vei avea "fereastra" iar unde ai orice altceva, vei avea canvas.
Dupa cum se vede, este suficient sa setez o imagine ca mask, pt o fereastra rotunda. Atentie doar la ferestrele "principale" ce au obligatoriu titlebar (cel putin pe Win32). Solutia e sa creati o fereastra "copil" (transistient for). Aici, m-am jucat putin, si am setat o imagine ce era si vizibila, ca mask. O problema a fost suprapunerea imaginii peste fereastra (pentru ca apare o diferenta data de border-ul ferestrei. Ca solutie, am pus un scrollbar in spate, si m-am jucat doar din pozitia pe verticala, asa cum vezi aici:
E un pic de munca de trial and error potrivirea lor, dar merita in final, mai ales ca volumul de munca este simtitor mai mic decat pe orice alt framework.
Tot la capitolul joaca, sunt 2 noi feature-uri: Metoda Screenshot pentru controale si proprietatea DragIcon ce acum accepta orice, nu numai obiecte de tip RImage.
Astfel, pentru un buton, putem spune WriteFile(CApplication::Screenshot(button1), "button1.png") rezultand fisierul button1.png pe SERVER cu "fotografia" controlului, asa cum se vede pe client, cu skin-ul aplicat.
DragIcon-ul poate fi setat chiar cu controlul:
button1.DragIcon=button1;
Nu se vede cursorul mouse-ului in shot, dar e suficient sa-ti faci o idee cum am luat butonul de pe fereastra si i-am facut drag in afara ferestrei.
Observatie: Shaped-window nu este functional pe Mac OS X.
No comments:
Post a Comment