« 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 »