Accueil > > > SNIPPET: /DRAWMIX
SNIPPET: /DRAWMIX
Information sur la source
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
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
[WF4] PASSAGE D'ARGUMENTS LITERAL, VISUALBASICVALUE OU LAMBDAVALUE?[WF4] PASSAGE D'ARGUMENTS LITERAL, VISUALBASICVALUE OU LAMBDAVALUE? par JeremyJeanson
Avec la sortie de la RC de Visual Studio 2010, Microsoft a mis un peu les points sur leS i en ce qui concernait le passage d'arguments. Mais nous somme un certain nombre à avoir pris ce changement comme un coup dur. Pour résumer la situation : à la sortie...
Cliquez pour lire la suite de l'article par JeremyJeanson [RIA SERVICES] INCLUDE ET DOMAINDATASOURCE[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE par Audrey
Dans un de mes articles précédents , j'avais parlé des DomainDataSource avec RIA Services dans le cas d'une interface Maître - Détail. Dans le même principe, je vais parler d'une autre manière de mettre en forme ce cas d'interface avec RIA Services. Et po...
Cliquez pour lire la suite de l'article par Audrey ZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATIONZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATION par ROMELARD Fabrice
Une des nouveautés de la version V 3.0 était l'apparition de l'onglet Social qui ne fonctionnait que si le MarketPlace était activé sur son poste. Cela limitait donc son intérêt, car hors du cadre commercial USA-CANADA, peu de monde trouva...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PRATIQUE DE SILVERLIGHT PAR ERIC AMBROSIPRATIQUE DE SILVERLIGHT PAR ERIC AMBROSI par MPOWARE
Je viens de finir la lecture du dernier livre d'
Eric Ambrosi
éditions PEARSON
Son livre donne une approche pratique de Silverlight qui sera aussi bien comprise par le développeur que par le designeur.
Tous les aspects du développement RIA sont abor...
Cliquez pour lire la suite de l'article par MPOWARE APPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NETAPPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NET par odewit
2 déclinaisons de Silverlight et 2 déclinaisons de Mono permettent dorénavant (ou permettront prochainement) de développer des applications .NET mobiles pour les principales plates-formes du marché :
Silverlight pour Symbian, basé sur Silverlight 2...
Cliquez pour lire la suite de l'article par odewit
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|