Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
GradientBox
#1
Łatwo jest tworzyć fajne gradientowe GUI. Publikuję kod w formie, która nie nadaje się do kopiowania i mam nadzieję, że utworzysz fajne menu. Aby dać ci pomysły, oto kilka wskazówek: Vista, Steam, Xfire.       Kod:   klasa CDraw {public: void FilledBox (float x, float y, float w, int h, int a, int r, int g, int b); void GradientBox (float x, float y, int w, int h, int r, int g, int b); }; CDraw Draw; // ____________________________________________________________________________________ void CDraw :: FilledBox (float x, float y, float w, int h, int a, int r, int g, int b) {if (! IsBadReadPtr (pLine [2], sizeof (ID3DXLine))) {D3DXVECTOR2 vLine [2]; pLine [2] -> SetWidth (w); pLine [2] -> SetAntialias (fałsz); pLine [2] -> SetGLLines (false); vLine [0]. x = x + w / 2; vLine [0]. y = y; vLine [1]. x = x + w / 2; vLine [1]. y = y + h; pLine [2] -> Begin (); pLine [2] -> Draw (vLine, 2, D3DCOLOR_ARGB (a, r, g, b)); pLine [2] -> End (); }} // ____________________________________________________________________________________ void CDraw :: GradientBox (float x, float y, int w, int h, int r, int g, int b) {float Alpha = 20; float Step = ((255 - Alfa) / h); dla (int i = 0; i <h; i ++) {Alpha = Alpha + Step; Rysować . FilledBox (x, y + i, w, 1, (int) Alfa, r, g, b); }} // ____________________________________________________________________________________   Przykładowe użycie:     Kod:   // Narysuje 300x300 czerwonego kwadratu gradientu na ekranie Rysuj. GradientBox (200, 200, 300, 300, 255, 0, 0);
Reply
#2
Czy masz zrzut ekranu z wynikiem?
Reply
#3
Pewnie. Używam tego w moim GUI.
Reply
#4
thx do wysyłania, + rep edytować: ŚWIĘTE PALENIE !! Vossy to cholernie fajne menu lol !! edit2: wow ... jak mogę naprawić lagg, jeśli go poprawię? jego Enormous
Reply
#5
Zacytować: Originally Posted by wieter20 thx do wysyłania, + rep edytować: ŚWIĘTE PALENIE !! Vossy to cholernie fajne menu lol !! edit2: wow ... jak mogę naprawić lagg, jeśli go poprawię? jego Enormous Rysowanie w D3D będzie miało olbrzymi wpływ na twój FPS. Dlatego podczas tworzenia gradientu w D3D dla prostego pudełka 100 x 100, wykonasz 100 połączeń, aby narysować linię 1px o innej wartości alfa. Najlepiej wyłączyć funkcje rysowania silnika, aby to zrobić. Możesz zastosować tę samą logikę kodu, co w pierwszym poście. Korzystanie z gier będzie miało minimalny wpływ na twój FPS.
Reply
#6
Dobre rzeczy, ale teraz rysujesz ALOT z tych pól, możesz również użyć sprite'ów (tnx do monster64) i narysować linie poniżej / następnej siebie: P
Reply
#7
Zacytować: Originally Posted by Turv Rysowanie w D3D będzie miało olbrzymi wpływ na twój FPS. Dlatego podczas tworzenia gradientu w D3D dla prostego pudełka 100 x 100, wykonasz 100 połączeń, aby narysować linię 1px o innej wartości alfa. Najlepiej wyłączyć funkcje rysowania silnika, aby to zrobić. Możesz zastosować tę samą logikę kodu, co w pierwszym poście. Korzystanie z gier będzie miało minimalny wpływ na twój FPS. thx na twój post, ale proszę wyjaśnij: "Funkcje rysowania silnika" jak można narysować silnik cod4? i dlaczego nie ma to wpływu na fps vossys? (Jestem pewien, że to jest jego komputer)
Reply
#8
Zacytować: Originally Posted by wieter20 thx na twój post, ale proszę wyjaśnij: "Funkcje rysowania silnika" jak można narysować silnik cod4? i dlaczego nie ma to wpływu na fps vossys? (Jestem pewien, że to jest jego komputer) Silnik gry będzie posiadał własną metodę rysowania obrazu 2D. Na przykład CoD4 używa zmodyfikowanej wersji Quake Engine, teraz mechanizm Quake Engine ma funkcję o nazwie DrawStretchPic. W kodzie zamieszczonym powyżej przy użyciu funkcji DrawStretchPic CoD4 można wyeliminować potrzebę użycia funkcji FilledBox Vossy, a zamiast tego w funkcji Gradientbox użyć tej samej logiki do utworzenia gradientu, ale wywołać funkcję silnika DrawStretchPic zamiast używać metod D3D znalezionych w funkcji wypełnionej skrzynki . W ten sposób rozwiązując swoje problemy z FPS (chociaż prawdopodobnie miałoby to jakiś wpływ, nie tak bardzo jak używanie D3D) Podobnie jak CoD4 ma funkcję DrawStretchPic, America's Army używa funkcji DrawTile (Unreal Engine) i tak dalej.
Reply
#9
WOW: O TWOJE FREAKING NICE MENU ROCKS ASS !!! DROŻEJ LEPIEJ W TYM HELIOSU !!! Czy możesz mi powiedzieć, czego używasz do rysowania tekstu? jest naprawdę ostry!
Reply
#10
Kod: void Tekst (const char * text, int x, int y, int Czerwony, int Zielony, int Niebieski, int Alpha, LPD3DXFONT Czcionka) {D3DCOLOR fontColor = D3DCOLOR_ARGB (Alfa, Czerwony, Zielony, Niebieski); RECT rct; rct. left = x + 1; rct. top = y + 1; rct. right = rct. lewa + 1000; rct. bottom = rct. top + 1000; va_list va_alist; char logbuf [256] = {0}; va_start (va_alist, text); _vsnprintf (logbuf + strlen (logbuf), sizeof (logbuf) - strlen (logbuf), text, va_alist); va_end (va_alist); Czcionka -> DrawText (NULL, logbuf, - 1, i rct, 0, fontColor); }
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)