AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 windows_radial_gradient()

Aller en bas 
AuteurMessage
Caly
Utilisateur confirmé: Rang ****
avatar

Messages : 1279
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.

MessageSujet: windows_radial_gradient()   Dim 2 Oct 2011 - 16: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:
 

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);
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 9012
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: windows_radial_gradient()   Dim 2 Oct 2011 - 17:12

Si tu veux encore optimiser utilise une surface :p
Un ptit screen pour montrer ce que ça donne serais cool aussi Wink

_________________
                 
Revenir en haut Aller en bas
Caly
Utilisateur confirmé: Rang ****
avatar

Messages : 1279
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.

MessageSujet: Re: windows_radial_gradient()   Mar 4 Oct 2011 - 10: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.
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 9012
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: windows_radial_gradient()   Mar 4 Oct 2011 - 11: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)

_________________
                 
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: windows_radial_gradient()   

Revenir en haut Aller en bas
 
windows_radial_gradient()
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Scripts GML-
Sauter vers: