Graphique: fusion de 2 images

0/5 (5 avis)

Vue 6 029 fois - Téléchargée 504 fois

Description

Cette source permet de fusionner 2 images (comme une superposition de 2 images avec un efffet de transparence: voir l'apercu) avec possibilité de réglages. C'est juste pour le principe que je mets cette source: vb étant lent, c'est completement inutile de développer des progs graphiques... (il faudrait le faire en C). Voila
@+

Source / Exemple :


Dim r(1), g(1), b(1)
Dim a As Integer

Private Sub c_Click()
PictureFusion sl1.Value / 100, sl2.Value / 100
End Sub

Private Sub PictureFusion(Coeff1 As Single, Coeff2 As Single)
For x = 0 To p(2).ScaleWidth
    For y = 0 To p(2).ScaleHeight
        For a = 0 To 1
            WannaRGB p(a).Point(x, y), a
        Next a
    p(2).PSet (x, y), RGB(r(0) * Coeff1 + r(1) * Coeff2, g(0) * Coeff1 + g(1) * Coeff2, b(0) * Coeff1 + b(1) * Coeff2)
    Next y
'DoEvents
Next x
End Sub

Private Sub WannaRGB(lng As Long, ind As Integer)
b(ind) = Abs(Fix(lng / (256 ^ 2)))
g(ind) = Abs(Fix((lng - b(ind) * (256 ^ 2)) / 256))
r(ind) = Abs(Fix(lng - b(ind) * (256 ^ 2) - g(ind) * 256))
End Sub

Codes Sources

A voir également

Ajouter un commentaire Commentaires
cs_AntiSlash Messages postés 61 Date d'inscription dimanche 21 juillet 2002 Statut Membre Dernière intervention 23 avril 2003
28 nov. 2002 à 21:47
lol, merci de me prévenir que cette source est pas optimisée... (il me semble avoir dit que c'etait juste pour le principe ?)
Proger>> ta source a l'air vraiment interessante, faut que je regarde.
Warny>> merci de tes remarques, je mettrais peut-etre a jour cette source si j'ai le temps...
@+
cs_Warny Messages postés 473 Date d'inscription mercredi 7 août 2002 Statut Membre Dernière intervention 10 juin 2015
28 nov. 2002 à 08:26
Salut,
Plutot que d'utiliser des nombre en virgule flottante (et toute la conversion qui va autour) pour calculer la couleur de tes points, tu devrais remplacer l'opérateur slash (division) par l'opérateur antislash (division entière).
Autre chose, plutot que de calculer les puissances à chaque opération (c'est lent) je te conseille de définir des constantes (typées bien sur) qui supportent tes valeur ou d'indiquer directement le résultat du calcul.
Dernier point, assure toi que ton image est en pixels !!!
Pour aller plus vite, je te conseil quand même de ne pas traiter sur la sortie graphique directement (parce que la mémoire graphique est pas accessible tout le temps, qu'elle s'impose des vérifications permanentes, qu'elle est soumise à des évenements...), mais sur des objets de type StdPicture (c'est fourni est standart sur le vb) qui permettent de traiter les images dans des espace mémoire séparer non soumis a tout ce que je t'ai raconté avant.
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 129
28 nov. 2002 à 06:29
Bon d'accord, VB n'est pas fais pour le graphisme, mais cette source est tout de même bien sympathique. bravo.

DARK SIDIOUS
Proger Messages postés 248 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 19 décembre 2008
27 nov. 2002 à 23:15
ADN733R > lol il me faut ton générateur de barratin!

Antislash, ton code dure 1.2 secondes sur ma machine (en supprimant la barre de progression). En l'optimisant je suis descendu à moins de 0.6 secondes.

On peut encore améliorer la rapidité en n'utilisant pas la fonction .Point() (ou l'api GetPixel() ) mais en travaillant directement avec les bitmap en mémoire (stocké sous forme de tableau), ce qui se fait en C++ d'ailleur.

manip' rapide de bitmap :
http://www.vbfrance.com/article.aspx?Val=6251

mais c'est sûr que sans pointeurs, VB aura une grosse lacune par rapport au C (avé les pointeurs, ton wannargb serai instantané, et on ne passerai pas par RGB() ni .Point() pour constituer/relever les couleurs! )
ADN733R Messages postés 63 Date d'inscription mardi 15 mai 2001 Statut Membre Dernière intervention 14 mai 2004
27 nov. 2002 à 22:25
Mesdames, Messieurs la conjoncture actuelle doit s'intégrer à la finalisation globale d'un processus allant vers plus d'égalité.
Je reste fondamentalement persuader que l'acuité des problèmes de la vie quotidienne a pour conséquence obligatoire l'urgente nécessité d'une valorisation sans concession de nos caractères spécifiques.
Par ailleurs c'est en toute connaissance de cause que je peut affirmer aujourd'hui que l'effort prioritaire en faveur du statut précaire des exclus conforte mon désir incontestable d'aller dans le sens de solutions rapides correspondant aux grands axes sociaux principaux.
Et c'est en toute conscience que je déclare avec convistion que l'aspiration plus légitime de chacun au progrès social fait des préoccupations de la population de base l'élaboration d'un programme plus humain, plus fraternel, et plus juste.
bien à vous

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.