'Dans un module
'pour rendre une des couleurs copiées transparente
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
Public Couleurtransparente As Long
Public HSour, LSour, LeftSour, TopSour As Integer
Public HDest, LDest, LeftDest, TopDest As Integer
'sur une Form
'1 CommandButton.name = CmdTransparentes
'1 pictureBox.name = PictSource
'1 pictureBox.name = PictFond
'1 pictureBox.name = PictResult
'les 3 pictureBox.ScaleMode = 3 (pixel)
' pictureBox.AutoRedraw = True
Private Sub CmdTransparentes_Click()
''********* Copie avec couleur transparante ********
HDest = PictSource.ScaleHeight
LDest = PictSource.ScaleWidth
LeftDest = (PictFond.ScaleWidth - PictSource.ScaleWidth) / 2
TopDest = (PictFond.ScaleHeight - PictSource.ScaleHeight) / 2
HSour = HDest: LSour = LDest: TopSour = 0: LeftSour = 0
'charge une image contenu dans un pictureBox(PictFond.Image) pour avoir un fond (dans ton cas image à retailler en forme d'hexagone)
'sur lequel sera dessiné l'image contenant une couleur devant etre transparente (PictSource) dans ton cas image en 2 couleurs d'un hexagone, l'exagone de couleur ROUGE, l'exterieur noir ou autre
'Couleur a rendre transparente = ROUGE
Couleurtransparente=255
PictResult.Picture = PictFond.Image: DoEvents 'image forcement d'arriere plan
'dimmensionne au format de l'image fond
PictResult.Height = PictFond.Height: PictResult.Width = PictFond.Width
TransparentBlt PictResult.hdc, LeftDest, TopDest, LDest, HDest, _
PictSource.hdc, LeftSour, TopSour, LSour, HSour, Couleurtransparente
PictResult.Visible = True: PictResult.Refresh
End Select
End Sub
'Ton image dans PictResult sera toujour carré ou rectangulaire, mais 'sera entouré d'un cadre hexagonale de couleur
'noir ou autre
Salut de ProgElecT