|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Transparence d'image [ Multimédia / Image & Vidéo ] (Kite37)
Informations & options pour cette discussion
jeudi 15 février 2007 à 19:59:00 |
Transparence d'image

Kite37
|
Bonjour!
Alors voici mon problème, qui parait assez simple mais qui est un vrai casse tête depuis quelques jours :( :
Pour les besoins d'un logiciel, je dois afficher une image (sur fond transparent) dans une picturebox.
Déja, premier problème : l'image, lorsqu'elle est chargée et affichée se vois modifiée ..
Ensuite, lorsque l'utilisateur clique sur cette picturebox, via un calcul je dois sélectionner une zone précise de l'image (une case de 16*16 pixel).
Lors de l'affichage du morceau sélectionné dans une autre picturebox prévue a cet effet, la taille s'en retrouve totalement modifiée .. je me retrouve avec un truc minuscule, et donc inutilisable..
Et le plus étrange dans tout cela, c'est que ce problème n'aparrait qu'avec des image transparente, et non avec d'autres images ..
Quelqu'un peut-il me dépanner?
|
|
|
jeudi 15 février 2007 à 21:27:21 |
Re : Transparence d'image

Anotine
|
Donnes nous d'abord une explication plus precise : Un petit morceau de code, le comportement de cette modification .. Peut-être est-ce un problème avec les couches alpha de ton image transparente ?! ... Il nous faut du code !
La programmation est l'art de mettre 15 jours pour gagner quelques millisecondes ...
|
|
|
jeudi 15 février 2007 à 21:40:43 |
Re : Transparence d'image

jmfmarques
|
Tu ne nous dis bien évidemment pas tout !
Si tu utilises une fonction de l'Api de Windows : quelle est cette fonction ? Tu parles curieusement d'une "une image (sur fond transparent)" ! Qu'est-ce que celà veut dire ? (rien pour moi, même si je "devine un peu" )
Montre ton code, en effet, y compris et surtout celui de la déclaration de la fonction gérant ta "transparence"...
Une chose est certaine : si par "transparence de fond", tu veux dire en fait "une couleur qui, déclarée "transparente", sera ignorée; l'image de ta pictureBox risque fort de ne pas être transformée "au fond" mais seulement en "apparence".
Si... et si... et si, encore... Mais on peut aller très loin avec tout ces "si".... seul ton code commenté "nous parlera".... et les conseils viendront alors... pas avant.
|
|
|
vendredi 16 février 2007 à 18:12:45 |
Re : Transparence d'image

Kite37
|
hmm je ne pense pas que le code puisse vous aider énormément, mais soit :
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'on load deux copie de l'image en mémoire
biblio = RecupImage(chemin & "\tiles.png")
biblioSansgrille = RecupImage(chemin & "\tiles.png")
'sur la première on trace le quadrillage afin de choisir les morceau d'images voulues
biblio_graphic = Graphics.FromImage(biblio)
For i As Integer = 0 To biblio.Width Step 16
biblio_graphic.DrawLine(Pens.Green, i, 0, i, biblio.Height)
Next
For i As Integer = 0 To biblio.Height Step 16
biblio_graphic.DrawLine(Pens.Green, 0, i, biblio.Width, i)
Next
biblio_graphic.DrawImage(biblio, 0, 0)
'et on l'affecte a la picturebox
picTile.Image = biblio
end sub
voici la function recupimage en question :
Private Function RecupImage(ByVal chemin As String) As Bitmap
'cette sub récupère des images (ici utilisée pour récupérer celle du monstre et celle du joueur)
'en un minimum de temps, tout en libérant au plus vite la mémoire
Dim originale As Bitmap = New Bitmap(chemin)
Dim copie As Bitmap = New Bitmap(originale.Width, originale.Height)
Dim g As Graphics = Graphics.FromImage(copie)
g.DrawImage(originale, 0, 0)
g.Dispose()
originale.Dispose()
Return copie
End Function
a noter que même avec image.Fromfile, le chargement de l'image dont le fond est DEJA transparent dans le fichier de base ne marche pas ..
voici ensuite le code qui se produit lorsque l'on clique sur la picturebox contenant l'image quadrillée :
Private Sub picTile_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picTile.MouseClick
'on retrouve les coordonnées du clique de la case
Dim Xclick As Long = Int(Int(e.X) / 16)
Dim Yclick As Long = Int(Int(e.Y) / 16)
'on l'affecte a la picturebox permettant le controle de la zone selectionnée
bit_CurTile = RecadrerImage(biblioSansgrille, New Rectangle(Xclick * 16, Yclick * 16, 16, 16))
picCurTile.Image = bit_CurTile
End Sub
et enfin voici la function recadrerImage :
Private Function RecadrerImage(ByVal ImgSource As Image, ByVal Rect As Rectangle) As System.Drawing.Image
'cette sub permet de récupérer une portion d'un bitmap sans le prendre dans son intégralité
If ImgSource IsNot Nothing Then
Dim ImgOut As System.Drawing.Image = New System.Drawing.Bitmap(Rect.Width, Rect.Height, ImgSource.PixelFormat)
Dim Graphics As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(ImgOut)
Graphics.DrawImage(ImgSource, 0, 0, Rect, System.Drawing.GraphicsUnit.Pixel)
Return ImgOut
End If
Return Nothing
End Function
Anoter que lorsque j'utilise des image normal, ce code marche parfaitement, mais que cela ne va plus avec les image dont le fond est DEJA transparent .. et devoir gérer cela par code impliquerait beaucoup de travail niveau PC, et celle-ci est précieusecar le logiciel globale peut etre assez gourmant ..
Voilou
|
|
|
vendredi 16 février 2007 à 19:23:19 |
Re : Transparence d'image

Anotine
|
Ton code fonctionne très bien chez moi ... même avec une image transparente. C'est à rien y comprendre ! Dis moi si je me trompe : Lorsque tu clique sur une partie de l'image picTile l'image picCurTile doit afficher le petit bout de l'image que tu as cliqué !? Dans ce cas ça marche très bien ... (VS 2005 - Framework 2 et toutes les mises à jour)
Bonne continuation
La programmation est l'art de mettre 15 jours pour gagner quelques millisecondes ...
|
|
|
vendredi 16 février 2007 à 20:19:28 |
Re : Transparence d'image

Kite37
|
arf bah moi ça ne veut pas marcher :s j'utilise aussi VS 2005 framework 2 mis a jour ..
bon bah ça vient peut être du fichier lui meme, les .png sont peut etre mal géré si transparents :s
Tant pis je continuerais a chercher, merci quand meme :)
|
|
|
samedi 17 février 2007 à 11:24:09 |
Re : Transparence d'image

Anotine
|
Essaye d'enlever les meusures dans ton code :
Au lieu de : Private Function RecadrerImage(ByVal ImgSource As Image, ByVal Rect As Rectangle) As System.Drawing.Image ' Cette fonction permet de récupérer une portion d'un bitmap sans le prendre dans son intégralité If ImgSource IsNot Nothing Then Dim ImgOut As System.Drawing.Image = New System.Drawing.Bitmap(Rect.Width, Rect.Height, ImgSource.PixelFormat) Dim Graphics As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(ImgOut) Graphics.DrawImage(ImgSource, 0, 0, Rect, System.Drawing.GraphicsUnit.Pixel) Return ImgOut End If Return Nothing End Function
Essaye : Private Function RecadrerImage(ByVal ImgSource As Image, ByVal Rect As Rectangle) As System.Drawing.Image ' Cette fonction permet de récupérer une portion d'un bitmap sans le prendre dans son intégralité If ImgSource IsNot Nothing Then Dim ImgOut As System.Drawing.Image = New System.Drawing.Bitmap(Rect.Width, Rect.Height) Dim Graphics As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(ImgOut) Graphics.DrawImage(ImgSource, 0, 0, Rect) Return ImgOut End If Return Nothing End Function
En espérant que ça marche !
|
|
|
Cette discussion est classé dans : problème, image, picturebox, transparence, modifiée
Répondre à ce message
Sujets en rapport avec ce message
Problème sur le traitement de l'image : besoin d'un peu d'aide ... [ par copyrightx ]
Voilà j'ai une image dans un picturebox et une fonction api nommée "TransparentBlt". Cette fonction permet de copier une image avec une couleur transp
Problème de Picturebox [ par cire2003 ]
Lorsque je mets un picturebox dans ma fenêtre, je me retrouve avec un arrière plan gris (celui par default). En ce qui me concerne, je mets une image
transparence image [ par le pro masterchief ]
Bonjour j'ai une question pour vous:Je programme un jeux de mario que j'avais déjà fait en vb6 et jai voulu utiliser l'utilitaire de migration de vb20
Problème avec le PictureBox [ par gibea00 ]
Bonjour !J'ai un problème avec un de mes pictureBox. Je veux mettre une image de type Bmp à l'intérieur de mon pictureBox. Es-ce qu'il y a un moyen
Problème de transparence [ par Kami1357 ]
Bon voilà le topo, j'ai une image qui est sencé se balader dans le Form mais cette image doit avoir un fond trasparent. J'ai d'abord utilisé un GIF a
problème d' enregistrement [ par CYBOR2000 ]
bjr a tous.mon problème :mon programme fusionne 2 images ds 2 picturebox ds 1 pictureboxen dessous, y a un bouton pour l' enregistrer l' image obtennu
Problème pour l'autoredraw et le save [ par drnicholas001 ]
Salut, grâce à votre aide j'ai réussis à faire que l'autoredraw n'e redessine pas sur l'image précédente dans la picturebox et à enresgistrer mon imag
Position de l'image dans une picturebox [ par arnakor ]
SalutVoilà mon problème. Je suis en train de réaliser un jeu d'échecs avec des picturebox (car on peut pas mettre de fond dans les imagebox). Pour les
problème avec le controle picturebox et image [ par psychodingue ]
j'arrive pas à foutre une image dans l'un de ces 2 controle, ça me dit que l'image est invalide, alors que acdsee l'ouvre très bien...voilà, merci pou
Transparence d' une picturebox [ par Fripouil ]
Bonjour,Voila en quoi se résume mon probléme.J' ai une picture box ( donc carré ) et mon image ( un rond ).Est il possible d' adapter la picturebox en
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|