salut tous le monde,
est il possible de rendre une partie d'un picturebox transparente de facon à pouvoir l'utiliser comme un claque pour photoshop.
merci
salut tous le monde,
est il possible de rendre une partie d'un picturebox transparente de facon à pouvoir l'utiliser comme un claque pour photoshop.
merci
dans la page sources, on parle de transparence, cela pourrait-il t'aider ?
si non, essaie de faire un peu de code et poste à la suite![]()
salut,
Khany le code qui parle de transparence dans la partie code permet de rendre un controle en sa totalité transparent mais je veux juste rendre une partie (sélectionné à main) d'un picturebox transparente.
d'ou je peux pas utiliser le code proposer.
si tu as une autre idée à le faire ou à l'ajuster à mon besoin dis le moi spt car je ne trouve pas comment faire.
je n'ai jamais eu besoin de ce système mais j'ai un jour croisé sur le web un programme nommé "Translucent" !
Je ne sais pas si cela pourra t'aider mais, qui ne risque rien n'a rien dit-on![]()
Khany le programme Translucent ,je le connais aussi il marche avec les même api et techniques que le code de notre site .
donc rien de nouveau pour mon problème.
je dirai même que je ne sais pas comment puis je aborder le problème d'ou je n'ai pas même une ligne de code à présenter mais je cherche encore sur le net.
mes recherches n'aboutissent à rien pour le moment![]()
![]()
aucune une idée de la part des adérants du forum.
Salut Nabil
Malheureusement, les controles d'images standards de VB6 ne gèrent pas la couche Alpha de tes images(le fameux "calque" qui indique les parties transparentes, notamment en PNG)
Ils ont réctifié le tir en VB.NET qui gere enfin la couche Alpha. mais bon je ne pense pas que tu vas changer de langage pour avoir une ou deux icones transparentes![]()
Tu peux éventuellement faire des recherches sur d'autres composants pour VB6 qui intègrent cette fonctionnalité, mais qui sont souvent payants.
est ce que je dois laisser tomber ???????????
pour le moment je ne vais pas désespérer et je continuerai à chercher.
evidament si je trouverai une solution je n'hésiterai pas à la poster
la seule chose que j'ai trouvé concernant la transparence concerne l'intégralité de l'image...
![]()
Ma page Developpez - Mon Blog Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag![]()
Venez sur le Chat de Développez !
Si j'ai bien compris cette solution devrait convenir.
Dans une Form,
1 CommandButton nommé "Cmd" pour declancher le processe
1 PictureBox nommé "Picture2" contenant une image quelconque qui servira de fond
1 PictureBox Nommé "Picture1" contenant une image ayant une partie de couleur à rendre transparante
1 PictureBox nommé "PictDest" pour recevoir le resultat
les PictureBoxs
AutoRedraw = True
ScaleMode = 3 (Pixels)
Salut une reponse ou le tag resolu , pour savoir si sela te convient ....ProGelecT
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Option Explicit 'declaration de l'aPI permettant de rendre transparant une couleur Public Declare Function TransparentBlt Lib "msimg32.dll" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal crTransparent As Long) As Boolean Dim MeColorTransp as long 'Pour couleur à ne pas dessiner Private Sub Cmd_Click() '********* Copie avec couleur transparante ******** 'charge une image contenu dans un pictureBox pour avoir un fond PictDest.Picture = Picture2.Image: DoEvents 'dimmensionne au format de l'image à dessiner PictDest.Height = Picture1.Height: PictDest.Width = Picture1.Width MeColorTransp = 255 'rouge, partie de l'image de cette couleur à ne pas dessiner sur PictDest TransparentBlt PictDest.hdc, 0, 0, PictDest.ScaleWidth, PictDest.ScaleHeight, _ Picture1.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, MeColorTransp PictDest.Visible = True: PictDest.Refresh End Sub
:whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
saut de ligne
OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈
salut ,
merci pour ta réponse, c'est ce que je voulai mais j'en juste un autre petit problème si je voulais déplacer l'image de l'arriere plan ,je pense que je devrai changer les cordonnée X,Y dans l'api .
Lorsque je change les cordonnées 0,0 je n'obtiens qu'une seule image.
code proposé :
code avec les X,Y changée:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 TransparentBlt PictDest.hdc, 0, 0, PictDest.ScaleWidth, PictDest.ScaleHeight, _ Picture1.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, vbWhite
avec ce code je n'obtiend que le contenu du picture2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 TransparentBlt PictDest.hdc, 0, 0, PictDest.ScaleWidth, PictDest.ScaleHeight, _ Picture1.hdc, 10,10, Picture1.ScaleWidth, Picture1.ScaleHeight, vbWhite
merci.
pour mettre un objet au premier plan
Pour ce qui est de la copie d'une image contenant une couleur à rendre transparente, avec l'API "TransparentBlt", voici un complément d'infos,
Code : Sélectionner tout - Visualiser dans une fenêtre à part MeObjet.ZOrder
j'ai completé les explications dans la procedure Cmd_Click.
j'espere avoir repondu a ta question.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Private Sub Cmd_Click() '********* Copie avec couleur transparante ******** 'charge une image contenu dans un pictureBox(Picture2.Image) pour avoir un fond 'sur lequel sera dessiné l'image contenant une couleur devant etre transparente (Picture1) PictDest.Picture = Picture2.Image: DoEvents 'image forcement d'arriere plan 'dimmensionne au format de l'image fond PictDest.Height = Picture2.Height: PictDest.Width = Picture2.Width 'pour centrer l'image contenant la couleur à rendre transparente '(qui sera forcement au 1° plan, et plus petite que l'image fond) sur le Fond Dim MeLeft, MeTop, MeHeight, MeWidth As Integer MeHeight = Picture1.ScaleHeight MeWidth = Picture1.ScaleWidth MeLeft = (Picture2.ScaleWidth - Picture1.ScaleWidth) / 2 MeTop = (Picture2.ScaleHeight - Picture1.ScaleHeight) / 2 MeColorTransp = 255 'rouge, partie de l'image de cette couleur à ne pas dessiner sur PictDest TransparentBlt PictDest.hdc, MeLeft, MeTop, MeWidth, MeHeight, _ Picture1.hdc, 0, 0, MeWidth, MeHeight, MeColorTransp PictDest.Visible = True: PictDest.Refresh PictDest.ZOrder End Sub
ProgElecT
:whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
saut de ligne
OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈
Rebonjour,
je veux déplacer l'image du fond pas l'autre(celle qui a des parties transparente)
je veux déplacer picture2 dans pictdest en changent ces corconnées dans pictdest1 PictureBox nommé "Picture2" contenant une image quelconque qui servira de fond
1 PictureBox Nommé "Picture1" contenant une image ayant une partie de couleur à rendre transparante
1 PictureBox nommé "PictDest" pour recevoir le resultat
merci
fait un paintpicture sur PictDest avec Picture2 au lieu de charger directement l'image de fond contenu dans Picture2
Desolé, je doit m'absenter pour l'apres midi je reprendrai en revenant.
Bon courage
ProgElecT
:whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
saut de ligne
OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈
pour le paintpicture ca ne marche pas mais j'ai trouvé la solution :
j'en ai ajouter un autre picturebox intermédiare et je positionne mon image avec bitblt puis je prend ce dernier comme fond et ca marche Nickel
Merci infinément pour ton aide.
Partager