| | windows_radial_gradient() | |
| | Auteur | Message |
---|
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: windows_radial_gradient() Dim 2 Oct 2011 - 18:49 | |
| Bonjour, Il s'agit d'un script qui permet de remplir la fenetre d'un dégradé radial. Ca ne fonctionne pas comme "background_color" qui ne suprime pas l'écran. x, y et size son des pourcentages. Version zoulie: - Spoiler:
- Code:
-
//background_color_radius(color1,color2,x,y,size);
//####INITIALISATION####
var ww,wh,x1,y1, x2,y2,color1,color2; ww= window_get_width(); wh= window_get_height();
x1 = ((ww*(argument2-(argument4/2)))/100)-(ww/2); y1 = ((wh*(argument3-(argument4/2)))/100)-(wh/2);
x2=(x1+ww)+((ww*argument4)/100); y2=(y1+wh)+((wh*argument4)/100); color1=argument0; color2=argument1;
//####DESSIN####
draw_set_color(color2); draw_rectangle(-1,-1,ww,wh, false);
draw_ellipse_color(x1,y1,x2,y2,color1,color2,false);
Version optimisée: - Code:
-
draw_set_color(argument1); draw_rectangle(-1,-1,window_get_width(),window_get_height(), false); draw_ellipse_color(((window_get_width()*(argument2-(argument4/2)))/100)-(window_get_width()/2),((window_get_height()*(argument3-(argument4/2)))/100)-(window_get_height()/2),(((window_get_width()*(argument2-(argument4/2)))/100)-(window_get_width()/2)+window_get_width())+((window_get_width()*argument4)/100),(((window_get_height()*(argument3-(argument4/2)))/100)-(window_get_height()/2)+window_get_height())+((window_get_height()*argument4)/100),argument0,argument1,false);
Exemple dans ev_draw: - Code:
-
windows_radial_gradient(c_blue,c_black,50,50,80); |
| | | onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: windows_radial_gradient() Dim 2 Oct 2011 - 19:12 | |
| Si tu veux encore optimiser utilise une surface :p Un ptit screen pour montrer ce que ça donne serais cool aussi |
| | | Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: windows_radial_gradient() Mar 4 Oct 2011 - 12:42 | |
| Bonjour, - Citation :
- Si tu veux encore optimiser utilise une surface :p
J'ai lus la documentation et trifouillé pas mal mon code mais je ne comprend pas comment faire. Il faut definir dans le draw ou dans la fonction le "if(!surface_exists(id))"? Il faut l'assigné la surface à une variable local ou global? Il faut faire un "return surface;" ou un "draw_surface(id,x,y);" à la fin de la fonction? J'ai essayée pas mal de choses mais rien ne fonctionne, ça me renvois systématiquement un écran gris (couleur du "background"). Ce qui j'ai à l'heure actuel est qui me semble bien. - Code:
-
//background_color_radius(color1,color2,x,y,size,id);
if (!surface_exists("argument5")){ argument5=surface_create(window_get_width(),window_get_height()); var ww,wh,x1,y1, x2,y2,color1,color2;
ww= window_get_width(); wh= window_get_height();
x1 = ((ww*(argument2-(argument4/2)))/100)-(ww/2); y1 = ((wh*(argument3-(argument4/2)))/100)-(wh/2);
x2=(x1+ww)+((ww*argument4)/100); y2=(y1+wh)+((wh*argument4)/100); color1=argument0; color2=argument1;
surface_set_target(argument5);
draw_set_color(color2); draw_rectangle(-1,-1,ww,wh, false);
draw_ellipse_color(x1,y1,x2,y2,color1,color2,false); }
draw_surface(argument5,0,0); - Code:
-
background_color_radius(c_blue,c_black,50,50,80,"surface"); Je ne vois pas ou j'ai fait une erreur. Ce devrais quand même me renvoyer quelque chose, là ça me revois rien. |
| | | onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: windows_radial_gradient() Mar 4 Oct 2011 - 13:50 | |
| Déjà tu fait pas de surface_reset_target(), donc tout ce que tu dessineras pas la suite ce dessineras dans ta surface. De plus je crois qu'il y a un bug avec GM si tu modifie ta surface dans un draw. Le top serais de créer ta surface dans le create, et ensuite l'afficher. Genre : script create_surface - Code:
-
if(variable_global_exists("_surf")) if(surface_exists(global._surf)) surface_free(global._surf)
global._surf = surface_create(64, 64) surface_set_target(global._surf)
// les draw draw_circle(32, 32, 16, 0)
surface_reset_target()
return global._surf #create s = create_surface() #draw draw_surface(s, x, y) |
| | | Contenu sponsorisé
| Sujet: Re: windows_radial_gradient() | |
| |
| | | | windows_radial_gradient() | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |