2010-02-25 6 views

Répondre

2

Vous devez d'abord SetStyle dans le constructeur afin que vous puissiez contrôler la peinture

this.SetStyle(
       ControlStyles.UserPaint 
       | ControlStyles.AllPaintingInWmPaint 
       | ControlStyles.SupportsTransparentBackColor 
       , true); 

Ensuite, vous êtes responsable de la peinture toute l'étiquette, y compris l'arrière-plan et le texte. Remplacer OnPaint

protected override void OnPaint(PaintEventArgs e) { 
    Graphics g = e.Graphics; 
    Brush b = new SolidBrush(this.ForeColor); 
    SizeF sf = g.MeasureString(this.Text, this.Font); 

    Padding p = Padding.Add(this.Padding, this.Margin); 

    // do not forget to include the offset for you circle and text in the x, y position 
    float x = p.Left; 
    float y = p.Top; 

    g.DrawString( this.Text, this.Font, b, x, y); 
} 

Une fois que vous avez dessiner le texte de l'étiquette, puis utilisez g.DrawEllipse pour dessiner le cercle que vous voulez et où vous voulez. Utilisez ensuite g.DrawString pour positionner le texte au-dessus.

Gardez à l'esprit que si vous devez fournir tout peu de la peinture que vous définissez les propriétés pour donc ce ne doit être utilisé pour les étiquettes qui sont conformes à la norme que vous allez mettre

+0

Merci. Qu'est-ce que 'TextAlign'? – nav100

+0

TextAlign est l'objet ContentAlignment de la chaîne. Il vous indique la position de la chaîne dans les limites des étiquettes – JDMX

+0

Merci pour votre aide. J'apprécie. J'ai ajouté un contrôle d'étiquette au formulaire et remplace onpaint. Je reçois xAlign et TextAlign n'existe pas dans le message contextuel actuel. Qu'est-ce que j'oublie ici? – nav100

0

Si vous disposez d'une ressource Image, vous pouvez définir la propriété Image sur l'étiquette, puis définir les propriétés Alignement du texte et Alignement de l'image pour l'amener à l'endroit voulu.

+0

Merci. Je n'ai pas d'image de ressource. Est-il possible d'utiliser l'objet Graphics? – nav100

0

Totalement d'accord avec Nick. Avoir 4 images avec diverses combinaisons et le montrer dynamiquement.

Espérons que cela aide.

Merci, Raja

1

Pour ce faire, par programme vous pouvez utiliser la méthode CreateGraphics du Label pour obtenir le Graphics. Vous pouvez ensuite utiliser les méthodes DrawElipse et DrawString pour créer l'image de votre choix.

Questions connexes