OVH Cloud OVH Cloud

Optimisation - System.Drawing.Bitmap et System.Drawing.Icon.FromHandle

2 réponses
Avatar
Manu
Bonjour,

Y'a t'il un moyen d'optimiser le code suivant sachant que dans le control
ImageList_Ico j'ai systematique deux icones (16x16) et rien d'autre ?

Parce que ce code fonctionne mais ralenti pas mal l'exécution.

Merci a ceux qui savent

Manu.



Dim oImg As System.Drawing.Bitmap

If bOpenClose Then

oImg = New System.Drawing.Bitmap(ImageList_Ico.Images(0))

Else

oImg = New System.Drawing.Bitmap(ImageList_Ico.Images(1))

End If

Dim ptrIco As IntPtr = oImg.GetHicon

Dim oIco As System.Drawing.Icon

oIco = System.Drawing.Icon.FromHandle(ptrIco)

StatusBarPanel_State.Icon = oIco

2 réponses

Avatar
Zoury
Salut Manu!

On pourrait réduire le nombre de déclarations ...
'***
StatusBarPanel_State.Icon Icon.FromHandle(ImageList_Ico.Images(Convert.ToInt32(bOpenClose)).GetHIcon()
)
'***

Dit le nous si ce n'est pas mieux.


ps : ImageList_Ico ne contient que ces 2 images ? t'en sert tu ailleurs ?

--
Cordialement
Yanick
MVP pour Visual Basic
"Manu" a écrit dans le message de
news:41eba4f3$0$11971$
Bonjour,

Y'a t'il un moyen d'optimiser le code suivant sachant que dans le control
ImageList_Ico j'ai systematique deux icones (16x16) et rien d'autre ?

Parce que ce code fonctionne mais ralenti pas mal l'exécution.

Merci a ceux qui savent

Manu.



Dim oImg As System.Drawing.Bitmap

If bOpenClose Then

oImg = New System.Drawing.Bitmap(ImageList_Ico.Images(0))

Else

oImg = New System.Drawing.Bitmap(ImageList_Ico.Images(1))

End If

Dim ptrIco As IntPtr = oImg.GetHicon

Dim oIco As System.Drawing.Icon

oIco = System.Drawing.Icon.FromHandle(ptrIco)

StatusBarPanel_State.Icon = oIco




Avatar
Manu
en réduisant les déclarations comme suit :

Dim oImg As System.Drawing.Bitmap = New
System.Drawing.Bitmap(ImageList_Ico.Images(Convert.ToInt32(bOpenClose)))
Dim ptrIco As IntPtr = oImg.GetHicon
StatusBarPanel_Mdb_State.Icon = System.Drawing.Icon.FromHandle(ptrIco)

Disont que c'est réduit mais y'a aucun gain de performance ...
Ma question c'est, pourquoi devoir passer par un format Bitmap alors que les
images dans ImageList sont déjà au format ico ?




"Manu" a écrit dans le message de news:
41eba4f3$0$11971$
Bonjour,

Y'a t'il un moyen d'optimiser le code suivant sachant que dans le control
ImageList_Ico j'ai systematique deux icones (16x16) et rien d'autre ?

Parce que ce code fonctionne mais ralenti pas mal l'exécution.

Merci a ceux qui savent

Manu.



Dim oImg As System.Drawing.Bitmap

If bOpenClose Then

oImg = New System.Drawing.Bitmap(ImageList_Ico.Images(0))

Else

oImg = New System.Drawing.Bitmap(ImageList_Ico.Images(1))

End If

Dim ptrIco As IntPtr = oImg.GetHicon

Dim oIco As System.Drawing.Icon

oIco = System.Drawing.Icon.FromHandle(ptrIco)

StatusBarPanel_State.Icon = oIco