Intégrer des images dans les fichiers du controle utilisateur (vb2005express) [Résolu]

Signaler
Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
11 septembre 2013
-
Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
11 septembre 2013
-
bonjour,

j'ai construit un controle utilisateur dans lequel j'affiche des picturebox. pour celà j'utilise la méthode: Image.FromFile(chemin+fichier)

ma question:
peut-on intégrer des images dans les fichiers générés par le controle pour éviter de joindre les images avec la dll du controle.
suis-je clair ?
ou bien une autre méthode ? j'ai en fait, 4 images en GIF de 1.5ko environ

merci.

10 réponses

Messages postés
14673
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
28 juin 2020
143
Bonjour


My.Ressources.NomRessource


En .NET2 c'est hyper simple les ressources.

Il est plus facile de batiser quelqu'un que de le convertir.(surtout en programmation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
14673
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
28 juin 2020
143
Bonjour


Quelques remarques :

- Ce code me titille :
<Category("Appearance"
), Description("Hauteur des lampes en pixels."
), DefaultValue(True)> _

Public Propertyhauteur_lampes()AsInteger

Comment la valeur par défaut peut-être True alors que tu utilise un entier ?


- Pour la taille, tu peux utiliser la structure Size, ça t'évite de déclarer 2 variables.


- Pour sélectionner la lampe allumée à la place de 3 variables booléenne, utilise un enum :


Public Enum EColor

    Eteint=0

    Rouge=1

    Jaune=2

    Vert=4

End Enum


private mColor as EColor=Eteint


Lors du dessin :


If (mColor And EColor.Rouge)>0 Then


    e.Graphics.DrawImage(My.Resources.rouge32,l,t,largeur_l,hauteur_l)


else


    e.Graphics.DrawImage(My.Resources.noir32,l,t,largeur_l,hauteur_l)


end if


If (mColor And EColor.Jaune)>0 Then


    e.Graphics.DrawImage(My.Resources.orange32,l,t+hauteur_l,largeur_l,hauteur_l)


else


    e.Graphics.DrawImage(My.Resources.noir32,l,t+hauteur_l,largeur_l,hauteur_l)


end if


If (mColor And EColor.Vert)>0 Then


    e.Graphics.DrawImage(My.Resources.vert32,l,t+hauteur_l*2,largeur_l,hauteur_l)


else


    e.Graphics.DrawImage(My.Resources.noir32,l,t+hauteur_l*2,largeur_l,hauteur_l)


end if


Pour utiliser la propriété :

Tricolor.Couleur=feu_tricolors.EColor.Rouge Or feu_tricolors.EColor.Vert


Et cela active le rouge et le vert.


- Pour documenter ton code, utilise les 3 ' (''') cela te permettra d'avoir les infobulles comme pour le reste du framwork.


- Tu ne controle pas la valeur fourni lors de l'appel de l'assignement
de heuteur_lampe, une valeur négative ou nulle sera acceptée.


- Dans OnPaint : il me semble inutile d'utiliser rect.left et les 3
autres, cela ne change rien dans ton code si tu met 0 à la place de t
et l, de plus tu n'utilise pas w et h.


- C'est peut-être une erreur de la coloration syntaxique, mais indente ton code (tabulations).


Voici rapidement ce que j'ai remarqué.

Il est plus facile de batiser quelqu'un que de le convertir.(surtout en programmation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
14673
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
28 juin 2020
143
Bonjour


Si tu est sous .NET2, tu peux les mettre en ressources (dans l'item projet de la liste des fichiers).

En .NET1, il faut ruser, ajoute le fichier à ton projet, puis met le en
ressource incorporée (propriétés), pour y accéder ... j'ai un trou.

Va voir le source de CutToKey ou DupKiller sous .NET 1 sur mon site à la page :

http://nhen0039.chez-alice.fr/fr/progvbnet.php

Il est plus facile de batiser quelqu'un que de le convertir.(surtout en programmation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
11 septembre 2013
2
merci, je suis en .net2
j'ai mis mes images en ressource, et ensuite, comment j'y fait référence dans le code du usercontrol ?
merci
Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
11 septembre 2013
2
vraiment trés simple en effet
je te remercie beaucoup

j'hésite à publier la source de mon controle ( j'ai honte un peu )
il s'agit d'un feu tricolore

merci encore
Messages postés
14673
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
28 juin 2020
143
Bonjour


Il faut bien commencer par un bout, mais en effet, peu d'intéret à le difuser sur VBFrance si ce n'est pas très compliqué.

Il est plus facile de batiser quelqu'un que de le convertir.(surtout en programmation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
11 septembre 2013
2
puis_je te coller ici le code pour voir si y a pas des trucs idiots ou fous ?
Messages postés
14673
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
28 juin 2020
143
Bonjour


Si tu veux, je quitte internet vers 15h45 pour aller en cours.

Il est plus facile de batiser quelqu'un que de le convertir.(surtout en programmation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
11 septembre 2013
2
Imports




System



Imports


System.Drawing



Imports


System.Windows.Forms



Imports


System.ComponentModel



Namespace


controles



Public
Class feu_tricolore



Inherits PictureBox



Private largeur_l AsInteger = 32


'largeur d'affichage des lampes




Private hauteur_l AsInteger = 32


'hauteur d'affichage des lampes




Private aff_rouge AsBoolean = True'affichage de la lampe rouge



Private aff_orange AsBoolean = True'affichage de la lampe orange



Private aff_vert AsBoolean = True'affichage de la lampe verte


<Category( "Appearance"

), Description("Largeur des lampes en pixels."

), _




DefaultValue(True)> _





Public





Property largeur_lampes() AsInteger



Get






Return largeur_l





End
Get






Set(ByVal value AsInteger)




largeur_l = value




Width = largeur_l




Invalidate()





End
Set






End
Property





<Category( "Appearance"

), Description("Hauteur des lampes en pixels."

), _




DefaultValue(True)> _





Public





Property hauteur_lampes() AsInteger



Get






Return hauteur_l





End
Get






Set(ByVal value AsInteger)




hauteur_l = value




Height = hauteur_l * 3




Invalidate()





End
Set






End
Property





<Category("Appearance"

), Description("Affiche la lampe rouge."

), _




DefaultValue(True)> _





Public





Property affiche_lampe_rouge() AsBoolean



Get






Return aff_rouge





End
Get






Set(ByVal value AsBoolean)




aff_rouge = value




Invalidate()





End
Set






End
Property





<Category("Appearance"

), Description("Affiche la lampe orange."

), _




DefaultValue(True)> _





Public





Property affiche_lampe_orange() AsBoolean



Get






Return aff_orange





End
Get






Set(ByVal value AsBoolean)




aff_orange = value




Invalidate()





End
Set






End
Property





<Category( "Appearance"

), Description("Affiche la lampe verte."

), _




DefaultValue(True)> _





Public





Property affiche_lampe_verte() AsBoolean



Get






Return aff_vert





End
Get






Set(ByVal value AsBoolean)





' aff_vert = value





aff_vert = value




Invalidate()





End
Set






End
Property






Protected
Overrides
Sub OnPaint(ByVal e As PaintEventArgs)





Dim rect As System.Drawing.Rectangle = e.ClipRectangle





Dim l AsInteger = rect.Left





Dim t AsInteger = rect.Top





Dim w AsInteger = rect.Width





Dim h AsInteger = rect.Height





If affiche_lampe_rouge = TrueThen





' e.Graphics.DrawImage(Image.FromFile(chemin_images + "\rouge32.gif"), l, t, largeur_lampe_rouge, hauteur_lampe_rouge)





e.Graphics.DrawImage(My.Resources.rouge32, l, t, largeur_l, hauteur_l)





Else





e.Graphics.DrawImage(My.Resources.noir32, l, t, largeur_l, hauteur_l)





End
If






If affiche_lampe_orange = TrueThen




e.Graphics.DrawImage(My.Resources.orange32, l, t + hauteur_l, largeur_l, hauteur_l)





Else





e.Graphics.DrawImage(My.Resources.noir32, l, t + hauteur_l, largeur_l, hauteur_l)





End
If






If affiche_lampe_verte = TrueThen




e.Graphics.DrawImage(My.Resources.vert32, l, t + (hauteur_l * 2

), largeur_l, hauteur_l)





Else





e.Graphics.DrawImage(My.Resources.noir32, l, t + (hauteur_l * 2

), largeur_l, hauteur_l)





End
If






End
Sub
'OnPaint






End



Class





End


Namespace
'controles
Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
11 septembre 2013
2
ok, merci beaucoup
je vais corriger tout çà

trés sympa de ta part.

bon cours ...