Czytając ten artykuł nauczysz się ustawiać kolor przezroczysty oraz maskę dla ładowanych rysunków w grach oraz programach pracujących na PowerDraw.
1. TransparentColor – kolor przezroczysty
Najpierw wyszukajmy jakiś rysunek z barwnym tłem np.
Kolorem przezroczystym będzie różowy : $FF00FF.
Uruchamiamy VTDb Manager. Tworzymy nową bibliotekę (1), a następnie klikamy (2)Add. Pojawia nam się formularz z różnymi parametrami. Klikamy (3)Browse, wybieramy rysunek i klikamy Otwórz. Teraz w ramce Alpha Channel zaznaczamy Transparent Color i wpisujemy (4): $FF00FF. Następnie klikamy Add. Aby sprawdzić, czy kolor został poprawnie wybrany przechodzimy na zakładkę Preview. Jeśli nie widać koloru
Tworzymy nową aplikację, umieszczamy na formie :
Komponent – Proponowana nazwa
PowerDraw – Ekran
PowerTimer – Zegar
VTDb – VTDb1
Następnie przygotuj kod źródłowy według podanego wzoru :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
unit transp; interface uses Forms, Classes, AGFUnit, d3d9, PDrawEx, VTDbUnit, PowerTimers, PowerTypes, PowerDraw3; type TForm1 = class(TForm) Ekran: TPowerDraw; Czas: TPowerTimer; VTDb1: TVTDb; procedure FormCreate(Sender: TObject); procedure CzasRender(Sender: TObject); private Rysunek : TAGFImage; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Ekran.Initialize; Ekran.InitDevice; PDrawExDLLName := 'System/' + PDrawExDLLName; Rysunek := TAGFImage.Create(Ekran); Rysunek.LoadFromVTDb(vtdb1,'pl',D3DFMT_A1R5G5B5); end; procedure TForm1.CzasRender(Sender: TObject); begin Ekran.Clear(0); Ekran.beginScene; Ekran.RenderEffect(Rysunek, 0, 0, 0, EffectSrcAlpha); Ekran.endScene; Ekran.Present; end; end. |
Jeśli nie jesteśmy pewni formatu pliku należy zamiast D3DFMT_A1R5G5B5 wpisać Ekran.DefTextureFormat, wtedy PowerDraw sam ustali odpowieni format. Jeśli zaś chcemy użyć funkcji EffectAdd i zarazem nie chcemy tracić przezroczystości należy wpisać EffectSrcAlpha or EffectAdd.
„Spine” 🙂 – tak jak chciałeś pojawił się o tym tutorial, to musi działać.
2. Maska – przezroczystość według wartości koloru od czarnego do białego Nie będę wiele pisał, ponieważ postępujemy identycznie jak w przypadku TransparentColor. Jedyną różnicą będzie w programie VTDb Manager zaznaczenie opcji Generate From Image i przypisanie temu rysunku z maską. Im jaśniejszy kolor tym bardziej widoczna część rysunku. Oto przykładowa maska:
Mam nadzieję, że ten temat został raz na zawsze zamknięty i nie będzie więcej z tym problemów.
Autor: Nakiel