Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VB.NET et le VBA d'un logiciel tiers (PhotoPAINT 12)

1 réponse
Avatar
Anne DeBlois
Bonjour à tous,

Dans PhotoPAINT 12, j'ai conçu du code VBA permettant de faire un
copier-coller d'une image TIFF ou PNG «transparente» (i.e. dotée d'un canal
alpha) sur une image CPT ou JPEG (constituant l'arrière-plan) de façon à ce
que le canal alpha soit également copié, et que l'image apparaisse
par-dessus l'arrière-plan avec la couleur transparente. Cela est très utile,
par exemple, pour ajouter à la photo JPEG d'un terrain non aménagé l'image
d'un arbre.

Le code fonctionne à merveille quand je clique sur un bouton personnalisé et
que j'utilise la boîte de dialogue Ouvrir pour aller chercher le TIFF.
Jusque là, ça va bien. Cependant, nous sommes en train de développer une
«galerie d'images maison» en VB.NET: Cette galerie regroupera des milliers
d'images de plantes au format TIFF (et peut-être éventuellement PNG) avec
arrière-plan transparent.

En faisant de la recherche sur Internet, j'ai constaté que Corel PhotoPAINT
ne permet pas de déclencher la procédure que j'ai collée plus bas par
glisser-déplacer, donc en faisant glisser une image de la banque à ma photo
de terrain avec ma souris. À moins que je trouve quelque chose du côté de
mon code VB.NET (banque d'images), je crois être bloquée à la boîte de
dialogue Ouvrir.

Je voudrais que vous preniez connaissance de mon code VBA (avec la procédure
que je veux remplacer par tout code pouvant m'aider à obtenir le résultat en
faisant un glisser-déposer à partir de ma banque d'images en VB.NET). Je me
demande si **dans notre code VB.NET** on peut utiliser des commandes API ou
autres machins-trucs pour permettre ce genre de manipulation, ou encore de
passer le nom du fichier image en argument pour que PhotoPAINT l'interprète
comme une commande "Ouvrir" normale quand je fais un glisser-déposer. Enfin,
je suis bloquée...

---Début du code ici------

Sub PourInsererTIFF()

Dim doc As Document
Set doc = ActiveDocument
' L'arrière-plan est déjà ouvert

Dim imgFileName As String

' ============ Code à remplacer par tout truc VBA ou .NET qui permet de
faire un glisser-déposer
' (ou drag and drop) =======================================================
' Au début, on le fait une première fois
' Spécifier le fichier TIFF/PNG transparent à insérer ou à coller dans votre
arrière-plan
imgFileName = CorelScriptTools.GetFileBox("Tous les fichiers (*.*)|*.*",
"Ouvrir l'image", 0)
' ====================================================================

' fait appel à ImporterEtDetourer
ImporterEtDetourer imgFileName, doc



End Sub

Private Sub ImporterEtDetourer(ByVal imagename As String, ByVal doc As
Document)

Dim TempDoc As Document
Dim lr As Layer
Dim x As Long, y As Long


Set TempDoc = OpenDocument(imagename)

If TempDoc.Mask.IsEmpty Then
TempDoc.Channels(1).CreateMask
End If

If Not TempDoc.Mask.IsEmpty Then
Set lr = TempDoc.Layers.Add(, , , pntCopySelection, TempDoc.Background)
lr.Copy
Else
TempDoc.Background.Copy
End If

x = (doc.SizeWidth - TempDoc.SizeWidth) / 2
y = (doc.SizeHeight - TempDoc.SizeHeight) / 2

doc.Layers.Paste x, y
TempDoc.Dirty = False
TempDoc.Close


End Sub

----Fin du code------------

Est-ce que quelqu'un a une piste à me proposer? Merci à l'avance,

Anne

1 réponse

Avatar
Anne DeBlois
Personne n'a d'idée?