begin process at 2012 02 14 06:45:02
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Multimédia

 > 

Image & Vidéo

 > 

Transparence d'image


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Transparence d'image

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

Membre Club
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ée 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales