Piirtopinnat

Nämä toiminnot ovat käytettävissä vain Game Makerin Pro-versiossa.

Tietyissä tilanteissa voit haluta maalata, et suoraan ruudulle, vaan kankaalle, jota voidaan sitten myöhemmin käyttää näiden asioiden maalaamiseksi ruudulle. Tällaista kangasta kutsutaan piirtopinnaksi. Voit esimerkiksi haluta antaa käyttäjän piirtää ruudulle. Maalin ei tulisi tulla piirretyksi ruudulle (koska se poistetaan jokaisella seuraavalla askeleella), vaan sen sijaan haluat piirtää sen erilliselle piirtopinnalle, joka kopioidaan ruudulle joka askeleella, tai voit haluta käyttää tekstuuria, joka muuttuu ajan myötä.

Piirtopinnat mahdollistavat tämän kaiken. Ne ovat itse asiassa melko helppokäyttöisiä. Luot ensin piirtopinnan. Seuraavaksi määrität, että tästä lähtien piirtäminen tapahtuu tälle pinnalle. Siitä hetkestä alkaen kaikki piirtofunktiot toimivat piirtopinnalla. Kun olet valmis, palautat piirtokohteen ja piirtäminen tapahtuu taas ruudulle. Voit piirtää piirtopinnan ruudulle monilla eri tavoilla tai käyttää sitä tekstuurina. Sinun täytyy kuitenkin tietää muutamia asioita. Katso huomautukset sivun lopusta.

Piirtopintojen kanssa toimimiseen on olemassa seuraavat funktiot:

surface_create(w,h) Luo annetun w pikselin levyisen ja h pikselin korkuisen piirtopinnan. Funktio palauttaa piirtopinnan id-arvon, jota täytyy käyttää kaikissa muissa kutsuissa. Huomaa, että piirtopintaa ei tyhjennetä. Tämä on pelintekijän vastuulla. (Aseta piirtopinta kohteeksi ja kutsu sopivaa tyhjennysfunktiota.)
surface_free(id) Vapauttaa piirtopinnan käytössä olevan muistin.
surface_exists(id) Palauttaa totuusarvon siitä, onko piirtopinta, jolla on annettu id, olemassa.

surface_get_width(id) Palauttaa piirtopinnan leveyden.
surface_get_height(id) Palauttaa piirtopinnan korkeuden.
surface_get_texture(id) Palauttaa piirtopintaa vastaavan tekstuurin. Tätä voidaan käyttää objektien, joilla on tekstuurina kuva piirtopinnasta, piirtämisessä.

surface_set_target(id) Asettaa määrätyn piirtopinnan piirtämisen kohteeksi. Kaikki tämän jälkeen tapahtuva piirtäminen tapahtuu tällä pinnalla. Se palauttaa projektion kattamaan vain piirtopinnan.
surface_reset_target() Palauttaa normaalin ruudun piirtämisen kohteeksi.

surface_getpixel(id,x,y) Palauttaa piirtopinnan kohtaa (x,y) vastaavan kuvapisteen värin. Tämä ei ole kovin nopeaa, joten käytä sitä varoen.
surface_save(id,fname) Tallentaa piirtopinnasta bmp-kuvan annettuun tiedostoon. Hyödyllinen kuvakaappausten ottamiseen.
surface_save_part(id,fname,x,y,w,h) Tallentaa osan piirtopinnasta annettuun tiedostoon.

draw_surface(id,x,y) Piirtää piirtopinnan kohtaan (x,y). (Ilman värjäystä ja alphaläpinäkyvyyttä.)
draw_surface_stretched(id,x,y,w,h) Piirtää piirtopinnan venytettynä annetulle alueelle.
draw_surface_tiled(id,x,y) Piirtää piirtopintaa vierekkäin niin, että se täyttää koko huoneen.
draw_surface_part(id,left,top,width,height,x,y) Piirtää määrätyn osan piirtopinnasta sen origon ollessa pisteessä (x,y).
draw_surface_ext(id,x,y,xscale,yscale,rot,color,alpha) Piirtää piirtopinnan skaalattuna, käännettynä, värjättynä (c_white = ei värjäystä) ja alphaläpinäkyvyydellä (0 - 1).
draw_surface_stretched_ext(id,x,y,w,h,color,alpha) Piirtää piirtopinnan venytettynä annetulle alueelle. color on värjäysväri ja alpha on läpinäkyvyys.
draw_surface_tiled_ext(id,x,y,xscale,yscale,color,alpha) Piirtää piirtopintaa vierekkäin niin, että se täyttää koko huoneen. Lisäksi voidaan asettaa skaalauskertoimet, väri ja läpinäkyvyysarvo.
draw_surface_part_ext(id,left,top,width,height,x,y,xscale,yscale,color,alpha) Piirtää annetun osan piirtopinnasta sen origon ollessa pisteessä (x,y). Lisäksi voidaan asettaa skaalauskertoimet, väri ja läpinäkyvyysarvo.
draw_surface_general(id,left,top,width,height,x,y,xscale,yscale,rot,c1,c2,c3,c4,alpha) Kaikkein yleiskäyttöisin piirtofunktio. Se piirtää annetun osan piirtopinnasta sen origon ollessa pisteessä (x,y). Lisäksi voidaan asettaa skaalauskertoimet, kääntökulma, väri kaikille neljälle kulmalle (ylävasen, yläoikea, alaoikea ja alavasen) sekä alphaläpinäkyvyysarvo.

surface_copy(destination,x,y,source) Kopioi piirtopinnan source kohdassa (x,y) kohdepiirtopinnalle. (Ilman värjäystä ja alphaläpinäkyvyyttä.)
surface_copy_part(destination,x,y,source,xs,ys,ws,hs) Kopioi määrätyn osan piirtopinnasta source kohdassa (x,y) kohdepiirtopinnalle. (Ilman värjäystä ja alphaläpinäkyvyyttä.)

Huomaa, ettei ruudun osien kopioimiseen piirtopinnalle ole funktioita. (Tämä on mahdotonta mahdollisten muotoeroavaisuuksien takia ruudun ja piirtopintojen välillä.) Jos tämä on välttämätöntä, sinun täytyy asettaa piirtopinta piirtokohteeksi ja piirtää sitten huone. Voit sitten käyttää piirtopinnan kopioimisfunktioita saadaksesi osia siitä.

Huomaa, että voit myös luoda kuvia ja taustoja piirtopinnoista. Katso lisätietoa osiosta resurssien muuttamisesta.

Näitä funktioita käytettäessä on oltava varovainen. Huomaa erityisesti seuraavat seikat: