Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Cross] WinAPI, GDI+

0 views
Skip to first unread message

Wojciech "Spook" Sura

unread,
Dec 2, 2009, 4:51:49 AM12/2/09
to
Crosspost na pl.comp.lang.delphi i pl.comp.programming
FUT: pl.comp.lang.delphi

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.

Tomasz Sowa

unread,
Dec 2, 2009, 5:51:26 AM12/2/09
to
Dnia Wed, 2 Dec 2009 10:51:49 +0100, Wojciech "Spook" Sura napisaďż˝(a):

> 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);

--
http://www.ttmath.org

Mariusz Marszałkowski

unread,
Dec 4, 2009, 1:41:45 PM12/4/09
to
On 2 Gru, 11:51, Tomasz Sowa <t...@ttmath.NOSPAM.org> wrote:
> Dnia Wed, 2 Dec 2009 10:51:49 +0100, Wojciech "Spook" Sura napisał(a):
>
> > 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ć?

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

0 new messages