Amiga NG nr 3

Page 30

28 gdzie 1 to identyfikator ścieżki, a 50 i 0 to pięćdziesiąt pikseli na osi X, czyli w prawo i zero pikseli na osi Y, czyli ani w dół ani w górę. Gdybyśmy użyli funkcji LineTo(), to linia zostałaby narysowana nie od 100,100 do 150,100, tylko do 50,0. Ok, jak już mamy naszego pierwszego wektora, to trzeba go jakoś narysować na ekranie naszej apki. Jako że w naszym wypadku ma to być tło to musimy najpierw przekształcić krzywą w pędzel używając funkcji: PathToBrush(ID, {{ID, Color, X, Y}} Jako pierwszy argument oczekuje ona podania identyfikatora pędzla do którego krzywa albo krzywe są przypisywane, stąd podwójne nawiasy klamrowe, Color to oczywiście kolor krzywej, w tym wypadku możemy podać inny kolor dla każdego wektora przypisywanego do pędzla. Co więcej styl wypełnienia i wygładzanie, cień itd. mogą być różne bo są określane w trakcie tworzenia danej krzywej. Nasza funkcja wygląda tak: Obramowanie = PathToBrush(Nil, {{ID=1, Color=$FFFFFF}} ) No dobra, ale zapytacie o co kaman z tym Obramowaniem i Nilem? Jest to system automatycznego przypisywania identyfikatora, poprzez podanie stałej wbudowanej Nil; sama wartość identyfikatora jest określana przez Hollywood, my tylko podajemy nazwę pod którą ma być zapisana jego wartość, tu "Obramowanie". Ten sposób może być używany wszędzie gdzie zajdzie taka potrzeba. Bezpośrednie podawanie wartości ID ogranicza nas do liczb, czasami ciężko się połapać co jest co, w takim wypadku przychodzi z pomocą automatyczne przypisywanie ID. Dzięki temu możemy nadać identyfikatorowi jakąś znaczącą dla nas nazwę i używać jej podobnie jak zmiennych. ID=1 to identyfikator ścieżki jaką przypisujemy do pędzla, i na koniec chcemy żeby nasz wektor miał kolor biały. Color=$FFFFFF. Współrzędne X i Y pomijamy. Dodam tylko jeszcze że mimo zamiany wektora na pędzel, wciąż pozostanie on wektorem, czyli obraca-

nie, czy zmiana rozmiaru nie będzie wpływać na jego jakość. Cały ten zabieg z zamianą potrzebny nam był, żeby użyć wspomnianego wyżej triku, umożliwiającego stworzenie zegarka bez ramek okna i tła. Tło takie nie musi mieć żadnego regularnego kształtu, będzie wyglądać tak jak pędzel (brush) po zastosowaniu następnej funkcji, którą jest: BrushToBGPic(BrushID, BGPicID) Jako pierwszy argument podajemy identyfikator pędzla, u nas to będzie "Obramowanie", a jako drugi identyfikator tła, u nas "1". Następnie użyjemy funkcji do wyświetlania obrazka z tłem: DisplayBGPic(ID {X, Y}) ID jak się domyślacie to identyfikator obrazka, a X i Y to współrzędne ekranu na którym nasz program będzie uruchamiany. Możemy użyć liczb albo stałych wbudowanych, takich jak #TOP, #RIGHT, #CENTER itp. Poza liczbami i wbudowanymi, możemy też użyć specjalnej stałej #KEEPPOSITION, przydaje się ona gdy zmieniamy tło i chcemy żeby nasza apka pozostała w tym samym miejscu na ekranie, bo w przeciwnym razie została by przesunięta na domyślną pozycję czyli środek. Teraz otwieramy ekran apki stosując funkcję OpenDisplay(1) jedyny argument jaki przekazujemy do tej funkcji to identyfikator. Funkcja ta powoduje że ekran naszego programu staje się widoczny, Ta Da, i stała się magia. O innych argumentach które możemy przekazać do tej funkcji możecie poczytać w manualu, jest ich całkiem sporo. (Zrzut 3). Mamy już tarczę zegara, teraz przyszedł czas na następne części naszego czasomierza. Zajmiemy się punktami godzin i minut – romby i kreseczki. Samo tworzenie obiektów wektorowych, to pikuś, schody się zaczynają w miejscu gdy chcemy je automagicznie wyrysować tak żeby użyć tylko jednej pętli dla obydwu, i żeby jeszcze znalazły się na odpowiednich miejscach. Tu z pomocą przyszedł mi teh_Kain, z resztą nie tylko tu.

AmigaOS 4


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.