Pravidla Ucet
Nepřihlášen

Článek

Menu

Draw actions
Napsal: NicharCZ
Přidáno: 16.07. 2010

Tady vám představím "Draw" funkce, které slouží k vykreslování. V článku naleznete také práci s alphou (průhledností), blendem a barvami.

Základní funkce

Jsou řazeny abecedně, nikoli podle četnosti...

draw_arrow(x1,y1,x2),y2,size)
• Od (x1,y1) do (x2,y2) nakreslí šipku směřující do bodu (x1,x2)
• Size je velikost hlavičky šipky

draw_background_xxx(...xxx...)
• Vykreslí pozadí
• Mnoho typů argumentů - máte možnost úpravy
• Hodně používaný: (back,x,y,xscale,yscale,rot,color,alpha)
• Back = vaše pozadí (vložené do hry či externí...)

draw_button(x1,y1,x2,y2,up)
• Prakticky nepužívaná funkce
• Vykreslí černé tlačítko
• Argument up, 1 tlačítko vysunuté, 0 zamáčklé

draw_circle_color(x,y,r,col1,col2,outline)
• Vykreslí kruh, kde r je poloměr kruhu
• Col1 je barva ve středu a col2 je barva okraje
• Outline - pro ohraničení kruhu true jinak false

draw_clear_alpha(col,alpha)
• Vyčistí vykreslování od určité barvy col
• Užití převážně při surfaces

draw_ellipse_color
• Totéž, co funkce draw_circle_color, až na argumenty
• Vykreslí elipsu, kde (x1,y1) je levý horní bod, ukazující počátek elipsy a (x2,y2) ukazující naopak druhý konec elipsy

draw_getpixel
• Vrací barvu z určeného pixelu
• Využití například pro paletu na získání barvy

draw_healthbar(x1,y1,x2,y2,amount,backcol,mincol,maxcol,direction,showback,showborder)
• Vykreslí healthbar (rámeček zdraví), argumenty xy12 opět určují polohu healthbaru
• Amount je počet zdravý, možno vykreslit proměnnou
• Backcol, mincol a maxcol jsou barva pozadí baru, pro minimum životů a maximum životů, bude se zbarvovat podle gradientu.
• Direction je orientace (0 - vlevo, 1 - vpravo, 2 - nahoře a 3 - dole)
• Showborder a showback jsou většinou true, určují vykreslování rámečku a pozadí healthbaru

draw_highscore(x1,y1,y1,y2)
• Vykreslení highscore v základním nastavení fontu atd. Nastavíte si umístění highscore argumenty

draw_line_width_color(x1,y1,x2,y2,w,col1,col2)
• Podobně jako u šipky, tak vykreslí úsečku vámi nastavenými parametry polohy a barev, w je šířka

draw_path(path,x,y,absoulte)
• Vykreslí cestu, od x do y, absolute s hodnotou true vykreslí cestu s ignorací argumentů x a y

draw_point(x,y)
• Nakreslí bod na vámi určeném místě
• Téměř nulové využití

draw_rectangle_color(x1,y1,x2,y2,col1,col2,col3,col4,outline)
• Vykreslí čtyřúhelník na učené pozici s velikostí, barvy se určují na hranách po směru hodinových ručiček od horního levého bodu
• Opět určení ohraničení outline
draw_roundrect_color(x1,y1,x2,y2,col1,col2,outline) • Vykreslí zaoblený čtyřúhelník s argumenty jako u předchozí funkce, až na colours, které určují barvu středu a následně barvu okraje
• Opět určení ohraničení outline

draw_sprite_xxx(...xxx...)
• Obdobné využití jako u backgrounds, vykreslí obrázek sprite
• Jedna z nejužívanějších funkci typu draw
• Hodně užívaná draw_sprite_ext(sprite,subimg,x,y,xscale,yscale,rot,color,alpha)
• Sprite je jméno obrázku, subimg je podobrázek, (x,y)scale je zvětšení, rot orientace, col už znáte, barva a nakonec alpha, což je průhlednost (od 0 do 1)

draw_text_xxx(...xxx...)
• Vykreslí text
• Opět mnoho argumentů, máte z čeho vybírat
• String je text, píše se v uvozovkách ("Ahoj"), sep je délka mezery, (x,y)scale je zvětšení, angle je orientace, c(1,2,3,4) jsou barvy a alpha je moje oblíbená průhlednost

draw_triangle_color(x1,y1,x2,y2,x3,y3,col1,col2,col3,outline)
• Vykreslení jednoduchého trojúhelníku, kde si určíte tři body xy(1,2,3) barvy hran a okraj

Nastavovací funkce

Jsou řazeny abecedně, nikoli podle četnosti...

draw_set_alpha
• Nastaví průhlednost alpha pro následující vykreslování

draw_set_blend_mode
• Nastaví typ směsy mode pro následující vykreslování

draw_set_circle_precision(precision)
• Nastaví přesnost precision pro následující vykreslování elipsy od 4 do 64

draw_set_color(col)
• Nastaví barvu col pro následující vykreslování

draw_set_font(font)
• Nastaví písmo font pro následující vykreslování
draw_set_halign
draw_set_valign
• Nastaví zarovnání (odsazení) horizontální anebo vertikální
• Pro halign: fa_left, fa_center, fa_right
• Pro valign: fa_top, fa_middle, fa_bottom

Pokročilé funkce

Jsou řazeny abecedně, nikoli podle četnosti...

draw_surface_xxx(...xxx...)
• Vykreslení předem vytvořené surface
• Mnoho argumentů
draw_surface_general(id,left,top,width,height,x,y,xscale,yscale,rot,c1,c2,c3,c4,alpha)
• Id je název vaší vytvořené surface

draw_primitive_begin(kind)
draw_vertex_color(x,y,col,alpha)
draw_primitive_end()
• Primitivní vykreslování
• Kind je typ polygonu
• Pracuje většinou s texturami: draw_vertex_texture_color(x,y,xtex,ytex,col,alpha), kde (x,y)tex je pozice textury
• Využití je při otexturovávání ploch

Barvy, blend a alpha


Zde jsou základní barvy použitelné v GM8
Kód:
c_aqua, c_black, c_blue, c_dkgray, c_fuchsia(světle fialová), c_gray, c_green, c_lime, c_ltgray, c_maroon(červeno-hnědá), c_navy(tmavě modrá), c_olive, c_orange, c_purple, c_red, c_silver, c_tea(bažinatá barva), c_white, c_yellow

nebo si namíchejte vlastní

make_color_rgb(red, green, blue)
• Hodnoty od 0 do 255, míchání barev
• Nesmírně užitečná funkce

Alpha

Alpha, neboli průhlednost, která se určuje čísly od 0 do 1, přičemž 0 je zcela průhledný (neviditelný), 1 - obrázek je zcela neprůhledný. Jsou povolena desetinná místa, takže image_alpha=0.45 //obrázek je z 55% průhledný



Blend

Je způsob vybarvování, v argumentech se značí většinou col. Obrázek se vybarví podle určené barvy, kterou si můžete namíchat (make_color_rgb). Funguje to na principu přetažení barevné folie přes obrázek, takže se díky tomu vybarví (příklad: Mám černobílou ovci, image_blend=c_orange, takže ovce bude oranžová a černá zůstane černou).



Celkem mě to dalo práci, kdyby byli nějaké připomínky, náměty, kritika či pochvala, tak prosím do komentářů.
Ostatní díly seriálu:
[16.07. 2010] - GML - Instances
[16.07. 2010] - GML - Images
Klíčová slova: Draw action akce vykreslení vykreslování kruh čtverec vertex barva color mnohoúhelník trojúhelník blend alpha
 

Komentáře:

Napsal: NicharCZ
Přidáno: 22.07. 2011

Nechybí, podívej se pořádně. Kdybych všechny tyhle (pod)funkce vypisoval, tak bych chcípl. Proto jsem tam dal: draw_text_xxx jakožto rozšíření.. ;)

Trvalý odkaz

Napsal: jiribocek
Přidáno: 19.07. 2011

Ještě ti chybí draw_text_color(x,y,text,c1,c2,c3,c4,alpha)

Přidal bych to jako poznámku v draw_text(...). Něco na styl Alternativní řeení draw_text_color(...)

Trvalý odkaz

Napsal: Kešu
Přidáno: 27.01. 2011

draw_getpixel má hodně využití, třeba takhle můžeš udělat barevnou paletu pro kreslící program, nebo na obravení třeba auta,postavy... a mnoho dalších.

Jenom, kdyby nebyl tak pomalej... :(

Trvalý odkaz

Napsal: NicharCZ
Přidáno: 25.12. 2010

Můžu to doplnit. Já jsem hledal ve spousta příkladů a nic jsem nenašel..

Trvalý odkaz

Napsal: DDL Blue
Přidáno: 24.12. 2010

draw_getpixel a prakticky žádný využití? To bych se hádal :D

Trvalý odkaz

Napsal: NicharCZ
Přidáno: 20.07. 2010

To znamená, že je hodně verzí funkce a hodně argumentů...

Trvalý odkaz

Přidáno: 20.07. 2010

ext!=xxx :D

Trvalý odkaz

Napsal: NicharCZ
Přidáno: 17.07. 2010

Jsem zvyklí psát všechny, byť sebemenší nadpisy velkým počátečním písmenem, takže se omlouvám a opravím... ;)

Trvalý odkaz

Napsal: Rion
Přidáno: 17.07. 2010

Oprav si tie začiatočné mená funkcii, píšu sa s malým písmenom!

Trvalý odkaz

Velkej Chytrák
Copyright (c) 2001-2010