MiharbiDoNo
Messages postés150Date d'inscriptiondimanche 17 mai 2009StatutMembreDernière intervention25 mai 2012
-
26 août 2009 à 04:18
Londonic
Messages postés298Date d'inscriptionjeudi 22 janvier 2009StatutMembreDernière intervention26 septembre 2009
-
31 août 2009 à 10:46
j'essais de faire un petit programme qui permet d'extraire une icone dans un picturebox, et la sauvegarder dans un fichier ico.
tous marche bien, on commence par ouvrir un ficher :
If OpenFileDialog1.ShowDialog = DialogResult.OK Then
Dim MyIcon As Icon = Nothing
MyIcon = Icon.ExtractAssociatedIcon(OpenFileDialog1.FileName)
PictureBox1.Image = MyIcon.ToBitmap
End If
premiere partie, parfait.
maintenant quand je click un bouton :
Dim sfd As New SaveFileDialog
sfd.Filter = "*.ico|*.ico"
If Not PictureBox1.Image Is Nothing Then
If sfd.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim file As FileStream = New FileStream(sfd.FileName, FileMode.OpenOrCreate)
MyIcon.Save(file)
file.Close()
MyIcon.Dispose()
End If
End If
ok. lr probleme que la qualité de l'icone est trop mauvaise. je remarque que la taille du fichier est à 700 octets presque. même si on vois bien l'icone dand le picturebox en haute qualité, mais c'est foutu après le sauvegarde.
ce code est genial parceque il me permet de créer une icone bien determiné (32*32, une seule image) mais le problem c'est la qualité.
quelqun peut m'aider?? merci.
A voir également:
Lorsque vous diffusez des annonces sur un moteur de recherche, si votre enchère est identique à celle de votre concurrent et que votre niveau de qualité est supérieur, où votre publicité s'affichera-t-elle par rapport à la sienne ?
MiharbiDoNo
Messages postés150Date d'inscriptiondimanche 17 mai 2009StatutMembreDernière intervention25 mai 2012 27 août 2009 à 22:15
en fait j'ai cru que la taille de l'icone est readonly, j'ai pas pensé a crée une nouvelle icone avec taille preci (même si ça fait rien, icone reste 32*32 O.o xD)
oué merci on tt K ^^
Londonic
Messages postés298Date d'inscriptionjeudi 22 janvier 2009StatutMembreDernière intervention26 septembre 2009 27 août 2009 à 22:18
Pardonne-moi, J'ai raté ton dernier message.
Le transtypage, c'est juste d'utiliser une variable tampon avec plus de mémoire: d'affecter (=) l'ICON au Bitmap. Le reste c'est kif. pour des programmeurs comme nous, c'est un jeu d'enfant. N'est-ce pas?
MiharbiDoNo
Messages postés150Date d'inscriptiondimanche 17 mai 2009StatutMembreDernière intervention25 mai 2012 27 août 2009 à 22:25
looolz... tkt t'as rien raté :p
emmm c à dire une varible de type icon, reste une varible de type icon xD on peut rien....
tu crois que je doit marquer ça comme repense acceptée?? :p
Londonic
Messages postés298Date d'inscriptionjeudi 22 janvier 2009StatutMembreDernière intervention26 septembre 2009 27 août 2009 à 22:33
Il est beau le Windows de demain qu'il faudra réserver la mémoire la veille pour les icones, comme quand on veut gérer soi-même le scrolling d'une page internet que sa taille est private quelque part.
Londonic
Messages postés298Date d'inscriptionjeudi 22 janvier 2009StatutMembreDernière intervention26 septembre 2009 27 août 2009 à 22:45
'C'est comme ça que je fais avec les icones:
''' <summary>
''' Extraire les icones d'un fichier.
''' </summary>
''' <remarks></remarks>
Public Class IconEx
Dim Handle As New IntPtr
Declare Function Extracticon Lib "Shell32.dll" Alias "ExtractIconA" _
(ByVal hInst As Integer, ByVal lpszExeFilename As String, _
ByVal nIconIndex As Integer) As Integer
Private Function GetNumberOfIcons(ByVal Str As String) As Integer
'Nombre d'Icones dans les ressources du fichier de path "Str"
Return Extracticon(Me.Handle.ToInt32, Str, -1)
End Function
Public Function Bitmapicon(ByVal FileName As String, Optional ByVal IconIndex As Integer = 0) As Bitmap
Try
Dim retval As Integer = Extracticon(Handle.ToInt32, FileName, IconIndex)
Return Icon.FromHandle(New IntPtr(retval)).ToBitmap
'Return Icon.ExtractAssociatedIcon(FileName).ToBitmap
Catch ex As Exception 'Pas de fichier par exemple
Return My.Application.OpenForms(0).Icon.ToBitmap
End Try
Londonic
Messages postés298Date d'inscriptionjeudi 22 janvier 2009StatutMembreDernière intervention26 septembre 2009 27 août 2009 à 22:49
On peut voir que j'ai abandonné Extract... pour une raison que j'ignore, mais que je l'ai laissé en remarque pour bien faire remarquer que j'avais essayé. J'ai du ramasser le reste du code dans mdsn ou dans codesSources.
MiharbiDoNo
Messages postés150Date d'inscriptiondimanche 17 mai 2009StatutMembreDernière intervention25 mai 2012 27 août 2009 à 22:55
nah ya pas de problem dans l'extraction de licone
ICON.ExtractAssociatedIcon(FileName) me suffir.
icon.tobitmap me donne une image de bonne qualité, ce qui signifie que ma variable icon a pour valeur une icone de bonne qualité.
le blem c'est la sauvegarder snif.