Witam!
Pisz� wprawdzie w Delphi, ale pytanie dotyczy bardziej WinAPI ni� Delphi,
wi�c s�dz�, �e i programi�ci innych j�zyk�w b�da mogli mi pom�c.
Ot� zainteresowa�em si� ostatnio GDI+, poniewa� chcia�bym przyspieszy�
rysowanie komponent�w, wykorzysta� antyaliasing i mo�liwo�� renderowania
bitmap z alph�. Dokumentacj� MSDNu przegl�dn��em pobie�nie, ale wynika z
niej, �e z GDI+ wsp�pracuje si� przy pomocy tworzonego na czas pracy
obiektu, za� podczas jego tworzenia przekazuje mu si� uchwyt do DC, na
kt�rym ma rysowa�.
Czyta�em kiedy� na temat DC i MSDN informowa�, �e DC powinno si� u�ywa�
kr�tko i zwalnia� tak szybko, jak to jest mo�liwe. Faktycznie, jest to
warto�� bardzo ulotna, bo cho�by zmiana parenta komponentu (lub dowolnego
parenta wzwy� hierarchii zawierania komponent�w), wystarczy �eby DC
przesta�o by� aktualne (przerabia�em to z OpenGLem).
Oznacza�oby to jednak, �e DC powinienem pobiera� przed ka�dym pojedynczym
odrysowaniem komponentu... ale z kolei wtedy za ka�dym razem musia�bym
r�wnie� tworzy� obiekt GDI+, a poniewa� chc� korzysta� z GPGraphics, to do
tego doszed�by jeszcze narzut czasowy zwi�zany z konstrukcj� klasy
obudowuj�cej funkcje GDI+. S�dz�, �e ci�g�e konstrukcje i destrukcje
obiekt�w w znacznym stopniu spowolni�yby operacj� odrysowywania.
Wydaje mi si� jednak, �e MS przewidzia� fakt, cz�stych zmian DC i istnieje
jakie� proste rozwi�zanie tego problemu. Czy kto� ma pomys�, jak to zrobi�?
Pozdrawiam -- Spook.
> Wydaje mi si� jednak, �e MS przewidzia� fakt, cz�stych zmian DC i istnieje
> jakie� proste rozwi�zanie tego problemu. Czy kto� ma pomys�, jak to zrobi�?
Para funkcji z winapi:
HDC GetDC(HWND hWnd);
int ReleaseDC(HWND hWnd, HDC hDC);
Odpisałem, ale wcięło gdzieś post. Zainteresuj się "trwałymi"
obiektami GDI, nie
wiem na pewno, być może są tym czego szukasz.
Pozdrawiam