Création de composant

Résolu
angel_of_tower Messages postés 23 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 17 novembre 2007 - 11 déc. 2006 à 20:25
DavidWhitewater Messages postés 81 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 1 janvier 2010 - 15 déc. 2006 à 21:17
voila  j'ais créer un composant en vb.net qui à la particularité d'afficher un image avec une label en dessous.
"Ce composant fonctionne bien. enfin presque!!", il permet de posé une image sur un formulaire,  de lui assigné un texte en dessous et de choisir la couleur qui sera transparent  lors de l'éxécution.
Mais voila je n'arrive pas à évité le message d'erreur lors du placement sur le formulaire
hé oui car lors de la fabrication mon image avais un contenue qui ne suit pas lors de mise en place sur un formulaire l'image du composant est nul "Nothing" il me donne un message d'erreur disant que il ne pas redessiner mon image puisqu'elle est perdue "le composant perd sa ressource"

si  quelqun a un idée ("Supper je suis preneur")

9 réponses

DavidWhitewater Messages postés 81 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 1 janvier 2010
14 déc. 2006 à 21:14
Salut, pour tester si une pictureBox contient une image tu fait :

If PictureBox1.image is nothing then ...
3
DavidWhitewater Messages postés 81 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 1 janvier 2010
15 déc. 2006 à 21:17
Envois moi un message lorsque tu aura terminé ton code, j'y jetterais un oeil.
3
DavidWhitewater Messages postés 81 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 1 janvier 2010
11 déc. 2006 à 21:58
Salut,

Si j'ai bien compris (et c'est pas sûr), ton composant possède une PictureBox et un Label. Le code de se composant contient une ligne qui affecte une image, de tes ressources, à cette PictureBox. Genre :

PictureBox1.image = My.ressources.MonImage

Si ton composant te sert à afficher une image, tu a dû faire une propiété pour définire/obtenir cette image. Genre :

Public Property Image() As Bitmap
        Get
            Return MonImage
        End Get
        Set(ByVal value As Bitmap)
            MonImage = value
        End Set
    End Property

Donc, tu supprime la ligne : PictureBox1.image = My.ressources.MonImage
Et éventuellement tu fait un test de valeur nul sur value dans le Set de la propriété.

A plus.
0
angel_of_tower Messages postés 23 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 17 novembre 2007
12 déc. 2006 à 18:51
Mon composant a effectivement un picturebox mais dans l'évenement Onpaint
j'affecte l'image de mon PictureBox1.image à Dim img AS image
Puis

'redéssine l'image
e.Graphics.DrawImage(img, destPara)
Mais voila quand je pose mon composant, l'image de mon pictureBox1 n'est pas affecté puisq' en faite lors du placememt tout est nul .
Donc en fait mon composant quand je le place sur mon formulaire doit avoir une image de défaut pour évité le message d'erreur et très important avoir la possibilité d' être réaffecter par une autre image lors de son utilisation.

Merci pour ton intéret
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DavidWhitewater Messages postés 81 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 1 janvier 2010
12 déc. 2006 à 21:22
Salut, tu n'est pas obligé d'avoir une image par défaut pour la picturebox. Il te faut une variable booléenne qui t'indique si le code peux tracer l'image ou pas.
Tu met dans le code d'initialisation du compasant :

Dim ImageExiste as Boolean = False

Puis, lorsque tu est sûr que tu peux placer une image dans la picturebox, tu met
ImageExiste = True

Et dans l'évènement Onpaint tu fait un test
if ImageExiste = False then Exit Sub

Si ca ne marche pas, montre moi ton code d'initialisation du composant (déclaration des variable en tête de ta classe), ainsi que la sub OnPaint et toute les procédures qui sont liées au dessin dans ta picturebox.

A plus.
0
angel_of_tower Messages postés 23 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 17 novembre 2007
13 déc. 2006 à 20:42
Dans ce principe il me faut créer une propriété du genre

PublicClass Myboutton

Inherits System.Windows.Forms.UserControl

Private CheckBox1 AsNew System.Windows.Forms.CheckBox  'pour ma propirété

PublicSub InitializeComponent()

Me.CheckBox1 = New System.Windows.Forms.CheckBox 'pour ma propirété
Me
.SuspendLayout()

Me.CausesValidation = False
Me.Controls.Add(Me.CheckBox1)

Me.ResumeLayout(False)

Me.PerformLayout()
End
Sub

Public
Property ImageVisible()
As
Boolean 'Ma propirété
<Category("Appearance"), Description(
"Image Visible"), _DefaultValue(
"False")> _

Get

ImageVisible = CheckBox1.Checked

End
Get

Set(
ByVal Value
As
Boolean)
CheckBox1.Checked = Value

End
Set

End
Property

Protected

Overrides
Sub OnPaint(
ByVal e
As PaintEventArgs)

' Crée parallelograme pour dessiner l'image.

Dim img As Image

Dim ulCorner
As
NewPoint(10, 1)

Dim urCorner
As
NewPoint(50, 1)

Dim llCorner
As
NewPoint(10, 40)

DimdestPara
AsPoint() = {ulCorner, urCorner, llCorner}

If ImageVisible =
False
Then
Exit
Sub  'Si ma propirété est True
'déssine l'image

e.Graphics.DrawImage(img, destPara)

End
Sub
End
Classdans se cas le problème c'est qu'il te faut mêtre a true la propriété ImageVisible
sinon l'image n'apparais pas  @+
0
DavidWhitewater Messages postés 81 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 1 janvier 2010
13 déc. 2006 à 21:24
Salut, je crois qu'on s'est pas bien compris. Pas question de faire une propriétée, mais une VARIABLE qui resteras local à ton composant. C'est ton code qui positionne la variable à TRUE lorsque les conditions sont remplis pour pouvoir afficher l'image, sinon est est à FALSE.

L'utilisateur de ton composant toi bien fournir une image pour alimenter le composant, c'est donc à ce moment là que ton code place TRUE dans la variable.

A plus.
0
angel_of_tower Messages postés 23 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 17 novembre 2007
14 déc. 2006 à 19:11
C'est bien la le problème quel est le code qui perment de savoir si dans ma PictureBox
if PictureBox1."?" =ImageExist( Boolean) then  e.Graphics.DrawImage(img, destPara)

'Si je fais

if PictureBox1.image=Nothing  then  e.Graphics.DrawImage(img, destPara) ' ne fonctionne pas cela produit une erreur

Erreur 1 L'opérateur '=' n'est pas défini pour les types 'System.Drawing.Image' et 'System.Drawing.Image'. C:\Visual Studio 2005\Projects\***\***\Button.vb 240 12 MonBoutton

Mais quel est donc ce fichue code  si je pouvais mettre la main dessus @+
0
angel_of_tower Messages postés 23 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 17 novembre 2007
15 déc. 2006 à 18:37
Oooouuuiii !!! Merci sa fait un baille que je cherchais se tout petit code 1000 * Merci

Je poffine encore un petit peut mon composant et je le met sur le net.
@ la prochane fois et Merci David
0
Rejoignez-nous