« Előző oldal- - - ^Tartalom^- - - Következő oldal »
RAJZOLÁS:
Előfordulhat, hogy egy-egy objektumnak, szereplőnek az eredeti
alakjától eltérő formát kell rajzolni. A GML-nek
hatalmas gyűjteménye van az ezzel kapcsolatos függvényekből.
Ezenkívül szöveg kirajzolására is vannak függvények.
Mindezek csak az adott objektumhoz rendelt rajzolás eseményben
(Draw event) használhatók.
A számítógépekben a grafikus hardver alkalmas a leggyorsabb
rajzolásra, minden más rajzolási rutin viszonylag lassú. A GM
a képek rajzolására van kiélezve.
Megjegyzendő, hogy az ütközések az objektumok eredeti
alakjaitól függenek és nem attól, hogy pillanatnyilag hogy
néznek ki. Jó tudni, hogy ha egy tárgynak van rajzolás
eseménye, akkor nem a hozzárendelt sprite-ot, hanem a rajzolás
eseményben megadottakat jeleníti meg, tehát ha a rajzoláson
kívül a hozzátartozó képét is látni akarjuk, akkor vagy
rajzoltassuk ki azt is a draw_sprite utasítással, vagy
a rajzolás végrehajtására hozzunk létre egy külön tárgyat
számára, melynek rajzolás eseményében a kódot már
hozzárendelhetjük az eredeti objektumhoz az Applies To
beállításával vagy a rajzolóutasítás paramétereinek az
adott objektum koordinátáihoz való viszonylagossá
tételével.
Törekedjünk minél kevesebbszer és minél kevesebb dologra
használni a rajzolást, mert lassítja a játékot.
draw_sprite(n,alkep,x,y) - az n
sprite alkep alképének (-1=pillanatnyi)
kirajzolása az x,y helyre.
draw_sprite_ext(n,alkep,x,y,xscale,yscale,alfa)
- kirajzolja a képet x-skála és y-skála méretezési
értékekkel. Alfa az átlátszóság értéke
(0=teljesen átlátszó, 1=nem átlátszó). Lassú, ha
alpha<1!
Ez a függvény GM 6-tól csak a regisztrált
változatban használható, és van két további paramétere:
draw_sprite_ext(n,alkep,x,y,xscale,yscale,forg,szin,alfa)
- forg az elforgatás szöge az óramutató
járásával ellentétesen, szin pedig a
keverési szín (c_white, ha nincs keverés).
draw_sprite_stretched(n,alkep,x,y,sz,m) -
megnyújtja az alakot, hogy kitöltse az x,y
sarok és sz-m
szélesség-magasság által határolt területet.
draw_sprite_stretched_ext(n,alkep,x,y,sz,m,alfa)
- ugyanaz, mint az előző, de az átlátszóság (alfa)
is beállítható.
Ez a függvény GM 6-tól csak a regisztrált
változatban használható, és van egy további paramétere:
draw_sprite_stretched_ext(n,alkep,x,y,sz,m,szin,alfa)
- szin a keverési szín.
draw_sprite_tiled(n,kep,x,y) - csempeként
rajzolja ki a képet, mely így kitölti a teljes pályát. X,y
a hely, ahová kirajzolódik egy a képekből.
draw_sprite_tiled_ext(n,alkep,x,y,xscale,yscale,alfa)
- ugyanaz, mint az előző, de itt a skálázás és az
áttetszőség is beállítható. Lassú, ha alfa<1!
Ez a függvény GM 6-tól csak a regisztrált
változatban használható, és van egy további paramétere:
draw_sprite_tiled_ext(n,alkep,x,y,xscale,yscale,szin,alfa)
- szin a keverési szín.
draw_sprite_part(n,alkep,bal,teteje,jobb,alja,x,y)
- az n jelű alak alkep
alképéből rajzolja ki a jelölt területet.
draw_sprite_part_ext(n,alkep,bal,teteje,jobb,alja,x,y,xscale,yscale,alfa)
- ugyanaz, mint az előző, de a skálázás és az
áttetszőség mértéke is beállítható.
Ez a függvény GM 6-tól csak a regisztrált
változatban használható, és van egy további paramétere:
draw_sprite_part_ext(n,alkep,bal,teteje,jobb,alja,x,y,xscale,yscale,szin,alfa)
- szin a keverési szín.
draw_background(n,x,y) - az n
jelű háttér kirajzolása x,y
helyre.
draw_background_ext(n,x,y,xscale,yscale,alfa) -
a háttér kirajzolása a skálázás és az áttetszőség
mértékének (0-1) beállításával. Lassú, ha alfa<1!
Ez a függvény GM 6-tól csak a regisztrált
változatban használható, és van két további paramétere:
draw_background_ext(n,x,y,xscale,yscale,forg,szin,alfa)
- forg az elforgatás szöge az óramutató
járásával ellentétesen, szin pedig a
keverési szín (c_white, ha nincs keverés).
draw_background_stretched(n,x,y,sz,m) -
kirajzolja a hátteret úgy, hogy kitöltse a jelölt (x,y,sz,m)
területet.
draw_background_stretched_ext(n,x,y,sz,m,alfa) -
az előző az áttetszőség beállításával.
Ez a függvény GM 6-tól csak a regisztrált
változatban használható, és van egy további paramétere:
draw_background_stretched_ext(n,x,y,sz,m,szin,alfa)
- szin a keverési szín.
draw_background_tiled(n,x,y) - a háttér
csempeszerű kirajzolása, így az kitölti az egész pályát.
draw_background_tiled_ext(n,x,y,xscale,yscale,alfa)
- az előző az áttetszőséggel és a skálázással
kibővítve.
Ez a függvény GM 6-tól csak a regisztrált
változatban használható, és van egy további paramétere:
draw_background_tiled_ext(n,x,y,xscale,yscale,szin,alfa)
- szin a keverési szín.
draw_background_part(n,bal,teteje,jobb,alja,x,y)
- az n indexű háttér kijelölt részét
rajzolja ki x,y helyre.
draw_background_part_ext(n,bal,teteje,jobb,alja,x,y,xscale,yscale,alfa)
- az előző az áttetszőség és a skálázás
beállításaival kibővítve.
Ez a függvény GM 6-tól csak a regisztrált
változatban használható, és van egy további paramétere:
draw_background_part_ext(n,bal,teteje,jobb,alja,x,y,xscale,yscale,szin,alfa)
- szin a keverési szín.
draw_pixel(x,y) - egy képpont kigyújtása x,y
helyen a rajzolószínnel.
draw_getpixel(x,y) - az x,y
helyen levő képpont színe. Nem túl gyors, ezért
körültekintően használjuk.
draw_fill(x,y) - az x,y
helyről kiindulva kitöltés a rajzolószínnel.
draw_line(x1,y1,x2,y2) - vonal rajzolása x1,y1
kiindulópontból x2,y2-be.
draw_arrow(x1,y1,x2,y2,meret) - nyíl rajzolása
x1,y1 kiindulópontból x2,y2-be.
Meret jelzi a nyíl képpontokbeni hosszát.
draw_circle(x,y,r) - x,y
középpontú, r sugarú kör rajzolása.
draw_ellipse(x1,y1,x2,y2) - ellipszis
rajzolása.
draw_rectangle(x1,y1,x2,y2) - téglalap
rajzolása (bal fölső és jobb alsó sarok koordinátái).
draw_roundrect(x1,y1,x2,y2) - lekerekített
sarkú téglalap rajzolása.
draw_triangle(x1,y1,x2,y2,x3,y3) - háromszög
rajzolása.
draw_arc(x1,y1,x2,y2,x3,y3,x4,y4) - egy
ellipszis körívének megrajzolása.
draw_chord(x1,y1,x2,y2,x3,y3,x4,y4) - egy
ellipszis húrjának megrajzolása.
draw_pie(x1,y1,x2,y2,x3,y3,x4,y4) -
ellipszisből egy tortaszerű alak rajzolása.
draw_button(x1,y1,x2,y2,be) - egy gomb
rajzolása. Be jelzi a be- (1) illetve
kikapcsoltát (0).
draw_text(x,y,szoveg) - egy szöveg kirajzolása
x,y helyre. A # jel, vagy a chr(13),
vagy a chr(10) beszúrása soremelést eredményez, így
többsoros szövegek rajzolhatók ki. (A \# használata magát a
# jelet adja, és nem okoz soremelést.)
Az idézőjelek vagy hiányjelek közötti szöveg változtatás
nélkül íródik ki, míg ha egy változó értékét kell
kiírni, akkor azt egyszerűen a változónév megadásával
lehet megtenni, pl. draw_text(5,5,screen_width)
Ha a változónév a szöveg részeként szerepel, akkor
szöveggé alakítva, '+'-jel után kell megadni, pl.
draw_text(5,5,"A képernyő oszlopainak száma:
"+string(screen_width))
Ha egy szöveg több szövegrészt és változót tartalmaz
vegyesen, akkor az egyes tagokat '+'-jellel elválasztva kell
megadni, pl. draw_text(5,5,'A képernyőnek
'+string(screen_width)+' oszlopa és '+string(screen_height)+'
sora van.')
draw_text_ext(x,y,szoveg,tav,sz) - hasonló az
előzőhöz, de itt a tav értékével
többsoros szövegeknél megadható a sortávolság (-1 az
alapértelmezett értékre állítja), az sz
értékével pedig a szöveg szélessége, képpontokban. Az
ennél az értéknél hosszabb sorok szétdarabolódnak a
szóközöknél és a kötőjeleknél; ez a -1 értékkel
megtiltható.
draw_text_sprite(x,y,szoveg,tav,sz,kep,elsojel,meret)
- a szövegek kirajzolása a fenti függvényekkel viszonylag
lassú. Ez a függvény ugyanúgy működik, mint az előző, de
az írásjelek ábráit egy képből veszi. Ebben a képben
minden írásjel számára lenni kell egy alképnek. Az első
írásjel az elsojel argumentummal adható meg,
melytől az írásjeleknek követniük kell az ASCII sorrendet. A
Windows-zal leellenőrizhető a karaktertérkép, hogy milyen az
írásjelek helyes sorrendje. Ha csak az első néhányukra van
szükség (pl. számokra vagy nagybetűkre), akkor nem kell
gondoskodni a többi írásjelről. A meret
jelzi a méretezési arányt (1 a rendes méret). Ezek a képek
hajlamosak nagyok lenni. Számukra természetesen nem szükséges
a pontos ütközésellenőrzés alkalmazása.
(Szövegek kiírására legcélszerűbb egy külön (látható,
de sprite-tal nem rendelkező) tárgyat használni, melynek
megsemmisítésekor a rajzolás eseményében kiírt
szöveg is eltűnik a képernyőről, és amely gördülő
képernyő esetén is mindig a képernyő ugyanazon részén
képes megjeleníteni a szöveget, ha a kiírás x és y
koordinátái a nézőponthoz vannak viszonyítva. Érdemes a
kiírandó szöveget egy változón keresztül adni ennek a
tárgynak a létrehozását követően, mely így egymaga
használható erre a feladatra ahelyett, hogy minden kiírásra
külön tárgyat kellene alkalmazni.)
draw_polygon_begin() - sokszög rajzolásának
kezdése.
draw_polygon_vertex(x,y) - csúcspont (x,y)
adása a sokszöghöz.
draw_polygon_end() - sokszög rajzolásának
befejezése.
draw_path(nyomv,x,y,absz) - az adott nyomvonal
kirajzolása a pályán a kezdőponttól x,y
pontig. Ha absz értéke igaz, akkor a nyomvonal
oda lesz kirajzolva, ahová eredetileg meg lett határozva, és x,y
értéke figyelmen kívül lesz hagyva. Ez a függvény a GM
5.3-as változatától használható.
action_draw_health(x1,y1,x2,y2,hatter,csikszine)
- az energiacsík kirajzolása x1,y1,x2,y2
területre. A hatter a háttér színe (értéke
0 és 16 közötti lehet; 0 ha nincs), csikszine
a csík színe (értéke 0 és 17 közötti lehet; 0 az átmenet
pirosból zöldbe, 1 feketéből fehérbe, a többi egyszínű).
A GM 5.3-as változatától egy másik
függvény is létezik az energiacsík kirajzolására:
draw_healthbar(x1,y1,x2,y2,ertek,htsz,minsz,maxsz,ir,mutht,mutszeg)
- az energiacsík (vagy bármilyen más
érték, pl. károsodás) kirajzolása. Az x1,y1,x2,y2
paraméterek a csík teljes területét jelzik, az ertek
pedig a csík feltöltöttségét százalékban (0 és 100
között kell lennie). Htsz a csík hátterének
színe. Minsz és maxsz azok a
színek, amelyek között a csík színének változnia kell
attól függően, hogy éppen mennyi az értéke, pl. zöldből
vörösbe. Ir az irány, mely felé a csík
kirajzolódik: 0=balról jobbra, 1=jobbról balra, 2=föntről
le, 3=lentről fel. A mutht jelzi, hogy a
háttérdobozt mutatni kell-e, a mutszeg pedig
hogy a doboz és a csík legyen-e fekete szegélyben.
A következő kilenc függvény a GM 6-os
változatától használható:
draw_clear(szin) - az egész pálya törlése az
adott színnel.
draw_clear_alpha(szin,alfa) - az egész pálya
törlése az adott színnel és alfa értékkel (különösen
hasznos a felszíneknek). GM 6.1-től.
draw_point(x,y) - egy pont kirajzolása x,y
helyre az éppen használt színnel.
draw_set_color(szin) - a rajzolószín
beállítása a rajzolófüggvényekhez.
draw_set_alpha(alfa) - az alfa áttetszőségi
érték beállítása a rajzolófüggvényekhez. Az értéknek 0
és 1 közé kell esnie. 0 jelenti a teljesen átlátszót, 1 a
teljesen átlátszatlant.
draw_get_color() - a rajzolófüggvények által
használt rajzolószínt adja.
draw_get_alpha() - a rajzolófüggvények által
használt alfa értéket adja.
draw_set_font(bk) - a szövegek kirajzolásához
használt betűkészlet beállítása. -1 az alapértelmezettre
állítás (Arial 12).
draw_set_halign(vig) - vízszintes igazítás a
szövegek kirajzolásakor. Értékként a fa_left
(balra), fa_center (középre) és fa_right
(jobbra) adható meg.
draw_set_valign(fig) - függőleges igazítás a
szövegek kirajzolásakor. Értékként a fa_top (fel), fa_middle
(középre) és fa_bottom (lentre) adható meg.
brush_color - szín az alakok kitöltéséhez. A
már előre meghatározott színek:
c_aqua - víz
c_black - fekete
c_blue - kék
c_dkgray - sötétszürke
c_fuchsia - fukszia
c_gray - szürke
c_green - zöld
c_lime - citrom
c_ltgray - világosszürke
c_maroon - gesztenyebarna
c_navy - sötétkék
c_olive - olajzöld
c_purple - bíbor
c_red - vörös
c_silver - ezüst
c_teal - "böjti réce" (?)
c_white - fehér
c_yellow - sárga
Pl. brush_color=c_blue;
Egyéb színeket a make_color(v,z,k)
függvénnyel hozhatunk létre, ahol az egyes paraméterek - a
vörös, zöld és kék színek - 0 és 255 közötti értékű
számok.
brush_style - aktuális ecsetstílus a
kitöltéshez. A következő stílusok használhatók:
bs_hollow - üres
bs_solid - szilárd
bs_bdiagonal
bs_fdiagonal
bs_cross
bs_diagcross
bs_horizontal - vízszintes
bs_vertical - függőleges
pen_color - a határvonalakat meghúzó toll
színe (ugyanazok, mint a brush_color-nál)
pen_size - a toll mérete képpontokban
font_color - a használandó betűkészlet
színe
font_size - a használandó betűkészlet
mérete (pontokban)
font_name - a betűkészlet neve (pl. font_name="Trebuchet
MS")
font_style - a betűkészlet stílusa. A
következők lehetnek:
- fs_normal - normális
- fs_bold - félkövér
- fs_italic - dőlt
- fs_underline - aláhúzott
- fs_strikeout - áthúzott
font_angle - szög, mellyel a betűkészlet
elfordul (0-360). Pl. a függőleges íráshoz a 90.
font_align - a betűkészlet igazítása a
következők szerint:
- fa_left - balra
- fa_center - középre
- fa_right - jobbra
font_pixels_per_inch - hüvelykenkénti (=2,54 cm)
képpontok száma. Csak lekérdezhető.
A következő, a GM 5.3-tól használható
kilenc rutin a színekkel dolgozik:
make_color_rgb(v,z,k) - visszatér a jelzett
vörös, zöld és kék összetevőjű színnel, ahol mindhárom
paraméter értékének 0 és 255 között kell lennie.
make_color_hsv(arny,telitettseg,ertek) - a
jelzett árnyalat, telítettség és érték összetevőjű
színt adja. Mindhárom paraméter értékének 0 és 255
között kell lennie.
color_get_red(szin) - az adott színhez tartozó
vörös összetevőt adja.
color_get_green(szin) - az adott színhez
tartozó zöld összetevőt adja.
color_get_blue(szin) - az adott színhez
tartozó kék összetevőt adja.
color_get_hue(szin) - az adott színhez tartozó
árnyalati összetevőt adja.
color_get_saturation(szin) - az adott színhez
tartozó telítettségi összetevőt adja.
color_get_value(szin) - az adott színhez
tartozó érték összetevőt adja.
merge_color(szin1,szin2,mennyiseg) - szin1
és szin2 színek egyesítéséből létrejött
színt adja. Az egyesítés a mennyiseg
értékétől függ. A 0 a szin1-nek, az 1 a szin2-nek
felel meg, a köztes értékek pedig az egyesített értéknek.
Néha ideiglenesen el kell állítani a dolgokat, rajzolni
valamit, majd visszaállítani az eredeti beállításokat. A
következő függvények erre szolgálnak:
push_graphics_settings() - az aktuális grafikus
beállítások elmentése.
pop_graphics_settings() - az elmentett
beállítások visszatöltése.
string_width(szoveg) - a draw_text()
függvénnyel kirajzolt szoveg szélessége.
string_height(szoveg) - a draw_text()
függvénnyel kirajzolt szoveg magassága
string_width_ext(szoveg,tav,sz) - a draw_text_ext()
függvénnyel kirajzolt szoveg szélessége
string_height_ext(szoveg,tav,m) - a draw_text_ext()
függvénnyel kirajzolt szoveg magassága
screen_gamma(v,z,k) -
sötétítés-világosítás. Csak "Exclusive mode"-ban
használható. A v,z,k
értéke -1 (sötétebb) és 1 (világosabb) között lehet. 0 az
alapértelmezett.
screen_save(fnev) - a képernyő tartalmát
elmenti az fnev.bmp állományba
screen_save_part(fnev,bal,teteje,jobb,alja) - a
képernyő kijelölt területét menti el.
« Előző oldal- - - ^Tartalom^- - - Következő oldal »