begin process at 2010 02 09 18:29:23
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

AddOns

 > SNIPPET: /DRAWMIX

SNIPPET: /DRAWMIX


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :AddOns Niveau :Initié Date de création :17/08/2004 Date de mise à jour :17/08/2004 21:05:08 Vu :1 874

Auteur : Seregon

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Applique un effet de transparence d'une image sur une autre. La différence avec le code que j'avais posté il ya quelque temps à propos de ca est que la methode est differente.
Ici le code reproduit l'effet de transparence obtenu avec la commande /setlayer avec un pourcentage de transparence défini par l'utilisateur.

Syntaxe:
/drawmix @input1 x1 y1 w h @input2 x2 y2 @output x3 y3 %age
Mixe le rectangle de coordonées x1 y1 w h de @input 1 avec le rectangle de coordonées x2 y2 w h de @input2 et le dessine aux coordonées x3 y3 dans @output
Si %age est spécifié, il indique le pourcentage de visibilité de @input1 dans le rendu final.

Source

  • alias drawmix {
  • /*
  • Le but de ce code est de donner un effet de transparence sans utiliser de grille de transparence avec un drawcopy -t
  • Pour cela on va evaluer la couleur de chaque pixel des deux image et determiner le code rgb situé à tant de % entre les deux rgb
  • */
  • ; Petite verification avant de démarrer :p
  • if (!$window($1)) || (!$window($6)) || (!$window($9)) || ($11 == $null) halt
  • ;Je met les infos utiles pendant la loop dans des var. Je ne détaillerai pas trop le fonctionnement de ma loop car je prefere laisser a chacun le soin de choisir sa propre methode.
  • var %per = $calc(100 - $iif(!$12,50,$12)), %xk = $2, %xf = $calc(%xk + $4), %ys = $3, %yf = $calc(%ys + $5), %xk1 = $7, %ys1 = $8, %xk2 = $10, %ys2 = $11, %win1 = $1, %win2 = $6, %win3 = $9
  • ; La llop va tracer ligne par ligne en augmantant l'ordonée de 1 a chaque fin de ligne
  • while (%ys <= %yf) {
  • var %xs = %xk, %xs1 = %xk1, %xs2 = %xk2
  • while (%xs <= %xf) {
  • /*
  • Afin d'expliquer comment je détermine le coide rgb, je vais prendre un exemple simple.
  • Je souhaite déterminer le réel x situé a p% d'un intervalle [a,b] ou a et b réels
  • On a: x= a + (a-b)*p/100
  • Je ne m'étendrai pas sur l'explication de ce calcul. Celui ci fonctionne que l'on prenne l'intervalle dans le bon sens ou non (a < b ou a > b)
  • On applique ainsi ce calcul sur chaque valeur r g b (prises séparément et non dans le code rgb en entier) de chaque pixel des deux images a mixer.
  • On rassemble ces données dans un $rgb et on a plus qu'a dessiner le point aux bonnes coordonées
  • */
  • var %rgb1 = $rgb($getdot(%win1,%xs,%ys)), %rgb2 = $rgb($getdot(%win2,%xs1,%ys1)), %r1 = $gettok(%rgb1,1,44), %g1 = $gettok(%rgb1,2,44), %b1 = $gettok(%rgb1,3,44), %r2 = $gettok(%rgb2,1,44), %g2 = $gettok(%rgb2,2,44), %b2 = $gettok(%rgb2,3,44)
  • drawdot -rn %win3 $rgb($round($calc(%r1 + (%r2 - %r1) * %per / 100),0),$round($calc(%g1 + (%g2 - %g1) * %per / 100),0),$round($calc(%b1 + (%b2 - %b1) * %per / 100),0)) 1 %xs2 %ys2
  • inc %xs
  • inc %xs1
  • inc %xs2
  • }
  • inc %ys
  • inc %ys1
  • inc %ys2
  • }
  • ;ce drawdot fait suite o flag -n présent dans les commandes draw* présentes plus haut (voir l'help pour plus de details)
  • drawdot %win3
  • }
alias drawmix {
  /*
  Le but de ce code est de donner un effet de transparence sans utiliser de grille de transparence avec un drawcopy -t
  Pour cela on va evaluer la couleur de chaque pixel des deux image et determiner le code rgb situé à tant de % entre les deux rgb
  */
  ; Petite verification avant de démarrer :p
  if (!$window($1)) || (!$window($6)) || (!$window($9)) || ($11 == $null) halt
  ;Je met les infos utiles pendant la loop dans des var. Je ne détaillerai pas trop le fonctionnement de ma loop car je prefere laisser a chacun le soin de choisir sa propre methode.
  var %per = $calc(100 - $iif(!$12,50,$12)), %xk = $2, %xf = $calc(%xk + $4), %ys = $3, %yf = $calc(%ys + $5), %xk1 = $7, %ys1 = $8, %xk2 = $10, %ys2 = $11, %win1 = $1, %win2 = $6, %win3 = $9
  ; La llop va tracer ligne par ligne en augmantant l'ordonée de 1 a chaque fin de ligne
  while (%ys <= %yf) {
    var %xs = %xk, %xs1 = %xk1, %xs2 = %xk2
    while (%xs <= %xf) {
      /*
      Afin d'expliquer comment je détermine le coide rgb, je vais prendre un exemple simple.
      Je souhaite déterminer le réel x situé a p% d'un intervalle [a,b] ou a et b réels
      On a: x= a + (a-b)*p/100
      Je ne m'étendrai pas sur l'explication de ce calcul. Celui ci fonctionne que l'on prenne l'intervalle dans le bon sens ou non (a < b ou a > b)
      On applique ainsi ce calcul sur chaque valeur r g b (prises séparément et non dans le code rgb en entier) de chaque pixel des deux images a mixer.
      On rassemble ces données dans un $rgb et on a plus qu'a dessiner le point aux bonnes coordonées
      */
      var %rgb1 = $rgb($getdot(%win1,%xs,%ys)), %rgb2 = $rgb($getdot(%win2,%xs1,%ys1)), %r1 = $gettok(%rgb1,1,44), %g1 = $gettok(%rgb1,2,44), %b1 = $gettok(%rgb1,3,44), %r2 = $gettok(%rgb2,1,44), %g2 = $gettok(%rgb2,2,44), %b2 = $gettok(%rgb2,3,44)
      drawdot -rn %win3 $rgb($round($calc(%r1 + (%r2 - %r1) * %per / 100),0),$round($calc(%g1 + (%g2 - %g1) * %per / 100),0),$round($calc(%b1 + (%b2 - %b1) * %per / 100),0)) 1 %xs2 %ys2
      inc %xs
      inc %xs1
      inc %xs2
    }
    inc %ys
    inc %ys1
    inc %ys2
  }
  ;ce drawdot fait suite o flag -n présent dans les commandes draw* présentes plus haut (voir l'help pour plus de details)
  drawdot %win3
}

 Conclusion

Pour le ($11 == $null) je voi d'ici les remarques arriver mais je n'ai pas mis (!$11) car celui ci fonctionnerait dans le cas ou $11 = 0 (possible si on veu dessiner le mix a une ordonnées nulle


 Historique

17 août 2004 02:58:48 :
17 août 2004 21:05:08 :

 Sources du même auteur

Source avec Zip METEOCONSULT
Source avec Zip BATNAV: JEU DE BATAILLE NAVALE POUR MIRC
SNIPPET - /DRAWTRANSP
SNIPPET: INTERCONNECTION SYSTEM
Source avec Zip Source avec une capture DESSINEZ C'EST GAGNÉ V1.0B

 Sources de la même categorie

BLACKLIST PSEUDOS/MASKS par usurpateur
Source avec une capture [XCHAT] ANTI KICK / AWAY C++ par GeroXXXX
JEU DU CODE par alanpersonproject
SERVEUR FTP par hisoka2501
BANNIR LES AGES, LES HOMMES, LES FEMMES ET PSEUDO AVEC CHIFF... par cougar_du_havre

Commentaires et avis

Commentaire de Kerrigan le 17/08/2004 14:02:58

j'ai rencontré le meme problème que toi hier soir c'est dingue lol !!!

par contre je comprend pas comment ça marche, j'aimerais bien avoir une version commentée pour aller plus loin dans le code.

beau boulot

Commentaire de Seregon le 17/08/2004 21:05:45

Vala pour les commentaires, si c'est pas compréhensible pmsg moi

Commentaire de PaDa le 18/08/2004 02:04:15

j'adore , dommage que mirc soit si lent ... :o) 10 :D

Commentaire de Eswald le 16/09/2005 11:52:26

Bonjour, ton cote m'interresse ...
mais voila je debute un peux personnellement et j aimerais savoir comment je poourrais utiliser ton code avec un nombre d'image illimité pour un proget personnel :)

Merci d'avance ...

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,744 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales