MangaDingue
Messages postés2Date d'inscriptionmardi 16 septembre 2003StatutMembreDernière intervention28 juin 2005
-
28 juin 2005 à 16:47
ProgElecT
Messages postés2Date d'inscriptiondimanche 19 juin 2005StatutMembreDernière intervention 3 octobre 2008
-
28 juin 2005 à 22:35
salut
voici mon probleme,
j ai un picturebox avec une image et je voudrais enlever une certaine partie de cette image
le but etant d obtenir une image de forme hexagonale
j ai regardé les sources sur le site mais je n ai pas trouvé mon bonheur
si quelqu un pouvait me venir en aide ce serait vraiment cool
Vincentsoft
Messages postés68Date d'inscriptionjeudi 26 octobre 2000StatutMembreDernière intervention17 avril 2009 28 juin 2005 à 18:01
Salut,
J'ai peut être une solution mais je peux pas la tester tout de suite, donc je te l'explique mais je te garanti rien.
Il faut parcourir ton image (picturebox) pixel par pixel et noircir
ceux qui ne doivent pas être affiché (ceux dont les coordonnées dans
l'image n'appartiennent pas à ton hexagone). Pour noircir un pixel dans
l'image, il faut utiliser un API, dont j'ai perdu le nom, mais je sais
qu'elle existe (un nom comme setPixel ou qqch comme ça). Ou même qu'il
y a peut être une fonction dans le picturebox qui le permet
directement, je ne sais plus (et je peux pas vérifier, j'ai pas VB ici).
Et pour déterminer les pixels qui doivent être cachés, faut que tu
vérifies pendant ton parcours si ses coordonnées appartiennent ou pas à
l'hexagone (mathématiquement)...pour le parcours, il faut juste
utiliser je pense deux boucles imbriquées qui parcourent la largeur et
la longueur.
ensuite, si tu veux enregistrer l'image (pour que le fichier soit
modifié aussi), c'est le même principe mais faut parcourir le fichier
lui même et non le picture box. Pour les fichier BMP, ça se fait assez
bien mais pour les jpg, je sais pas trop, faudrai voir sur le site...
Voilà, je sais pas si je répond bien à ta question, j'espère...
ProgElecT
Messages postés2Date d'inscriptiondimanche 19 juin 2005StatutMembreDernière intervention 3 octobre 2008 28 juin 2005 à 22:35
'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
'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