Dokumentacja i przykłady API do rysowania na Windows Aero Glass (DWM, GDI, GDI+) dla wszystkich programistów Win32
Szukam dobrych zasobów do nauki korzystania z API Win32 / GDI lub cokolwiek innego, aby rysować i malować bezpośrednio za pomocą API Win32 do szklanej formy.
Kiedy używam Delphi, otagowałem to jako Delphi lub Visual C++. Wszelkie próbki kodu i artykuły, które można znaleźć, będą mile widziane. Artykuły MSDN nie wydają się być napisane na ten temat.
Jako cel, wyobraźmy sobie, że chcesz albo: (a) odtworzyć to, co robi Google Chrome (karty jako część szkła ramka) (b) odtworzyć to, co robi MS Office 2010 (przycisk Zapisz na szklanej ramce, o którym mowa w MFC dla VS 2010, jako "pasek narzędzi szybkiego dostępu" (patrz rysunek poniżej).
Nie używam MFC, ale jeśli zbadanie źródeł MFC byłoby dobrym źródłem informacji, jestem ciekaw, gdzie w źródłach MFC lub oryginalnych źródłach BCG (mam oba) są zaimplementowane szybki dostęp do paska renderowania / malowania kodu.
Update: odnośnik neato z jednej z poniższych odpowiedzi pokazuje komunikat NC (nonclient) Paint i jak sobie z nim poradzić podczas malowania na szklanej ramce oraz artykuł MSDN o tym tutaj .
5 answers
Jest to podzbiór mojego folderu" szklane " zakładki, wynik partii badań / poszukiwań na ten temat. Okazało się, że wszystko to jest przydatne do nauki o szkle i rozwiązywania różnych problemów na jego podstawie. Większość z nich obejmuje Kod Delphi, ale zauważyłem, gdzie jest dla innego języka.
Linki szklane zwykłe
- używanie przezroczystych okien z Delphi : dobre wprowadzenie (od samych podstaw) do używania szkła w Delphi formularze
- własne rysowanie na szkle : opisuje jak narysować bitmapę lub inny obraz na szklanym obszarze okna. Obejmuje również kanały Alfa itp., dobry przegląd
- używanie szkła w projekcie VC++ : obejmuje włączanie szkła, rysowanie tekstu, obsługę powiadomień itp. - dobre ogólne wprowadzenie do tego, jak to działa. Wiele podstawowych szczegółów jest obsługiwanych przez VCL (np. własność GlassFrame i tform wewnętrzne dbają o wiele tego), ale jest to bardzo przydatne do zrozumienia podstaw implementacji na poziomie API w każdym razie
- Jak rysować na obszarze innym niż klient: pokazuje, jak narysować coś takiego jak pasek narzędzi Office na pasku tytułu. Kod. net, ale tłumaczalny
- Konfiguracja niestandardowego paska tytułu: bardzo szczegółowy artykuł o rysowaniu poza obszarem klienta (w Delphi, więc kod Delphi). Następnie część 2 , która pokazuje całkowite przejęcie całego okna i naśladowanie standardu pasek tytułowy. te dwa artykuły pozwolą Ci naśladować Office i Chrome, jak prosiłeś w pytaniu
- Jak skonfigurować różne elementy sterujące VCL, aby działały najlepiej na obszarze szkła: VCL nie obsługuje zbyt dobrze szkła. Często otrzymujesz artefakty lub elementy sterujące po prostu nie rysują poprawnie, bez względu na to, co zrobisz, aby je rozwiązać. W tym artykule wymieniono podstawowe komponenty wizualne VCL (etykiety, przyciski, paski postępu itp.) i co skonfigurować dla każdego z nich, aby rysuj idealnie, lub przynajmniej "jak najlepiej", gdy są umieszczone na szklanym obszarze
Zaawansowane, lub pokrewne stycznie:
- Jak działa skład pulpitu, z GDI i DirectX surfaces
- W przeciwieństwie do innych interfejsów API menedżera desktopów, nie można ich używać w aplikacjach Aero.]}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-30 04:19:14
Te posty na rysowaniu niestandardowego paska tytułu Pod Vista / Windows 7 mogą Cię zainteresować.
Przykładowy obraz:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-08 14:30:27
Jestem pewien, że znalazłeś stronę MSDN o DWM . Zawiera wiele tematów i kilka przykładów. Niektóre z artykułów "overview" zawierają przykłady (np. rozmycie DWM za Overview ).
Niestety, poza dokumentacją, jest kilka cennych dobrych artykułów. Możesz zacząć od używając glass na codeproject, i przyjrzeć się wykrywaniu glass w delphi - potem korzystanie z funkcji prosto z dokumentów nie jest takie złe. Na szczęście w praktyce wszystkie są całkiem proste.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-29 14:45:23
Dobra strona dla elementów szklanych, w tym szklany guzik:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-30 01:39:12
Ponadto te stare artykuły mogą Ci pomóc:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-29 22:22:16