Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rysowanie ListView (Lista kontaktow)
Konnekt | Forum > Developerzy > Tworzenie wtyczek
Trial
Witam smile.gif to znowu ja... bede kontynuawal temat rysowania Item-ow na liscie kontaktow.

Moze zaczne od tego jak dziala wtyczka tlok w skrocie.
W aktualnej fazie wtyczka: pozwala odrysowac to co ma do odrysowania na mojej bitmapie pamieciowej - przekazuje swoj kawalek bitmapy do konnekta zeby on na nim narysowal to co ma do narysowania (podczas obslugi komunikatu WM_DRAWITEM). Konnekt nanosi tlo na dany obszar (ITEM) nastepnie rysuje Ikonki (statusy sieci, pytajniki, chmurki i inne), oczywiscie nazwe kontaktu i opis. Tak kawalek odrysowany w pamieci ja biore i nakladam swoja bitmape w miejscach gdzie pojawil sie kolor Tła. Wlasnie stad jest ta nie przezroczystosc ikonek i bledne wyswietlanie czcionek true type.

(1) Wpadlem na pomysl aby pobierac dla kontaktu wszystkie ikonki czyli te pytajniki, slonka, chmurki, opisy itd. i ich pozycje w danym item-ie. To rozwiazalo by problem rysowania przezroczystosci. Tutaj mi sie nasuwa rozwiazanie zastoswane w kStyle tylko nie wiem jak tam jest to zrobione.

(2) Jest jeszcze jedno prostrze rozwiazanie, czyli przekazac do konnekta obszar z kawalkiem bitmapy a on nie rysujac TŁA na itemie tylko odrazu by narysowal ikonki, opisy itd. to rozwiazalo by rowniez problem z przezroczystoscia.
Mysle ze ten sposob raczej nie jest mozliwy do realizacji wiec pozostajemy przy pobraniu wszystkich ikon, opisow i narysowaniu tego samemu - (sposob 1).


wiec jak by ktos mogl pomoc mi w rozwiazaniu tego problemu to bylbym wdzieczny.

z gory dzieki
KoSiarzPL
CODE

vector<Kontakt> kontakty = Grupa("wybrana grupa").Get_Kontakty();
string nazwa;
string opis;
int status;
int siec;
int ikona;

for( size_t i = 0; i < kontakty.size(); ++i )
{
nazwa = kontak[i].Get_NazwaWyswietlana();
opis = kontakt[i].Get_StatusInfo();
siec = kontakt[i].Get_Siec();
status = kontakt[i].Get_Status();

if( siec == enSiec::Jabber )
{
  if( status == enStatus::Niedostepny )
  { ikona = ...}
  else if( status ... )
  { ikona = ... }
}
else ...

//1. rysuj ikone
//2. rysuj nazw
//...
}


Jest jakieś inne wyjście? Może od razu zrób nowego listviewa ?
Olórin
CODE
if( siec == enSiec::Jabber )
{
  if( status == enStatus::Niedostepny )
  { ikona = ...}
  else if( status ... )
  { ikona = ... }
}
else ...

//1. rysuj ikone
//2. rysuj nazw
//...

A UIIcon to nie widzieliście?

CODE
for( size_t i = 0; i < kontakty.size(); ++i )

A po co takie kombinacje? Przecież w WM_DRAWITEM dostajemy informację jakiego itema przerysować.

QUOTE
Tutaj mi sie nasuwa rozwiazanie zastoswane w kStyle tylko nie wiem jak tam jest to zrobione.

kStyle robi poprostu IconRegister z plików, czyli zamienia ikonki w imagelist, resztą zajmuje się UI.
Trial
QUOTE
kStyle robi poprostu IconRegister z plików, czyli zamienia ikonki w imagelist, resztą zajmuje się UI.


fuck sad.gif

pobranie ikon to jedno powiedzmy ze wiem jak juz to zrobic.. dam rade.. tylko gozej jak je umiejscowic na itemie
ehhh

a wszystko przez jedna glupote rysowanie tla na ITEM-ie. ile kodu mniej by bylo i w ogole normalka smile.gif
moze ktos cos wiecej.. moze jakis pomysl na ta przezroczystosc.. ??
KoSiarzPL
QUOTE(Olórin @ 5.04.2006 - 13:19) *

CODE
for( size_t i = 0; i < kontakty.size(); ++i )

A po co takie kombinacje? Przecież w WM_DRAWITEM dostajemy informację jakiego itema przerysować.

Ach nie zauważyłem że Trial pytał się o "dany item". Podałem kod w razie gdyby chciał sam wypełnić całą listę. Więc wychodzi na to samo tylko bez fora wink.gif

Ja bym sie na twoim miejscu zastanowił Trial czy chcę tylko zmieniać tło czy od razu całą kontrolkę trzasnąć. Wtedy byś miał wszystko po swojemu.

[edit]

Zagadaj z Hao może mógł by sprawdzać jeszcze jakiś przekazywany parametr by nie rysować tła na elemencie.
hao
No właśnie item rysowany jest od razu i dość brutalnie... Trzeba by to wydzielić do osobnej f-cji i udostępnić ją przez API... Zastanowię się nad tym smile.gif (i przy okazji poprawię problem z pustymi wiadomości w kJ)

Nie obiecuję jednak efektów, bo UI od bardzo dawna nie było ruszane i z tego okresu mam dość słabo zwersjonowane źródła.
KoSiarzPL
Hao przecież wiesz, że ja bardzo chętnie zajmę się rozwojem kJabbera. Będziesz miał kilka problemów mniej wink.gif
Trial
QUOTE
Trzeba by to wydzielić do osobnej f-cji i udostępnić ją przez API... Zastanowię się nad tym


to znaczy ze bedzie poprawka konnekta teraz jakos ??
czy trzeba bedzie czekac do wersji 0.7 ??
KoSiarzPL
Trial, myśl racjonalnie, na co nam by były poprawki wydane dopiero w wersji 0.7 wink.gif? Myślę, że Hao zrobi ten dobry uczynek i wyda je niebawem smile.gif
Trial
no to jesli tak to bede bardzo szczesliwy smile.gif
juz teraz nawet jak pisze tego posta to morda mi sie smieje tongue.gif laugh.gif biggrin.gif rolleyes.gif smile.gif wink.gif cool.gif
hao
Dorzuciłem sobie do todo. Z kJ zobaczymy jak i kiedy, bo trzeba by go przenieść do innego repo, a to zawsze trochę roboty.
Trial
Hao - to ja czekam na jakis ruch w tej sprawie smile.gif zawsze moge sie podpiac do poszerzania wygladu UI badz nawet calkowicie sie tym zajac smile.gif

pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2012 Invision Power Services, Inc.