IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Effet de 3D sur Label


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut Effet de 3D sur Label
    Salut All,

    Je voudrais faire un petit effet de vision 3D sur un label en vs2005.
    En VB6, c'etait facile car il suffisait de superposer 2 labels avec 1 pixel en plus à droite et bas et de couleurs differentes pour faire un beau rendu.
    Mais maintenant, avec la fausse transparence ... on ne peut plus faire cela.

    Qq connaitrait-il comment faire cela ?
    Thx All,
    Danyel.

  2. #2
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Et pourquoi ne pas faire ton petit rendu dans l'évènement Paint du label ?

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 240
    Par défaut
    Plus que dans l'event Paint, une bonne fois pour toute à l'initialisation du label en créant un bitmap que tu affecte à la propriété image du label.
    Propriété Text à "" et texte a afficher dans la propriété Tag par ex.

  4. #4
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 183
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 183
    Par défaut
    Bonjour.

    Citation Envoyé par Totanne Voir le message
    Plus que dans l'event Paint, une bonne fois pour toute à l'initialisation du label en créant un bitmap que tu affecte à la propriété image du label.
    Propriété Text à "" et texte a afficher dans la propriété Tag par ex.
    Certes mais ça oblige à gérer le resize, le changement de .text, de forecolor et autres...

    Donc je passerai plutôt par le onpaint en utilisant un buffer (via une bitmap) et en faisant un textrenderer ou plutôt un drawstring (la qualité est meilleure dans ce cas), puis un second décalé par rapport au premier.
    Puis, afficher l'image par le graphic du onpaint.

    Cdt.

  5. #5
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut
    Citation Envoyé par olsimare Voir le message
    - je passerai plutôt par le onpaint en utilisant un buffer (via une bitmap)
    - Puis, afficher l'image par le graphic du onpaint.
    Salut Olsi,
    Tu peux m'en dire un peu plus sur ces 2 phrases.
    Ok pour le drawstring, mais pas sur le buffer puis sur l'affichage du dit buffer.
    Merci pour ton aide.

  6. #6
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 183
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 183
    Par défaut
    Bonjour.

    C'est parce que je pars du principe que ton label est transparent (au vue des posts précédents ).

    Donc il s'agit de dessiner le contenu du label dans une bitmap intégralement (le BackGround ET le ForeGround), avant d'afficher le tout via un graphics.drawimage.

    Plutôt qu'un long discours :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    Option Strict On
    Option Explicit On
    Imports System.Runtime.InteropServices
     
    Public Class LabelForDany
        Inherits Label
     
    #Region "declaration"
        Private cShadowForeColor As Color = Color.WhiteSmoke
    #End Region
     
    #Region "Graphique"
        Public Property ShadowForeColor() As Color
            Get
                Return cShadowForeColor
            End Get
            Set(ByVal value As Color)
                cShadowForeColor = value
            End Set
        End Property
     
        Protected Overrides Sub OnPaint( _
        ByVal e As PaintEventArgs)
     
            Dim bufferImage As Bitmap
            bufferImage = New Bitmap(Bounds.Width, Bounds.Width)
            Dim gd As Graphics = Graphics.FromImage(bufferImage)
            gd.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
            gd.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
     
            PaintParentBackground(gd)
     
            Dim intShadowOffset As Integer = CInt(Font.Size / 10)
     
            gd.DrawString(Text, Font, New SolidBrush(ShadowForeColor), New Point(intShadowOffset, intShadowOffset))
            gd.DrawString(Text, Font, New SolidBrush(ForeColor), New Point(0, 0))
     
            gd.Dispose()
     
            e.Graphics.DrawImage(bufferImage, 0, 0)
     
            bufferImage.Dispose()
     
        End Sub
        Private Sub PaintParentBackground(ByVal g As Graphics)
            If Not Me.Parent Is Nothing Then
                Dim rect As Rectangle = New Rectangle(Left, Top, Width, Height)
                g.TranslateTransform(-rect.X, -rect.Y)
                Dim pea As PaintEventArgs = New PaintEventArgs(g, rect)
                pea.Graphics.SetClip(rect)
                InvokePaintBackground(Parent, pea)
                g.TranslateTransform(rect.X, rect.Y)
            Else
                g.FillRectangle(SystemBrushes.Control, ClientRectangle)
            End If
        End Sub
     
        Protected Overrides Sub OnPaintBackground( _
        ByVal pevent As PaintEventArgs)
            ' rien
        End Sub
     
    #End Region
     
    End Class
    Ca n'est pas parfait (pas de gestion du TextAlign ou autre) mais illustre le truc.

    Cdt.

  7. #7
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut
    Citation Envoyé par smyley
    Et pourquoi ne pas faire ton petit rendu dans l'évènement Paint du label ?
    Oui, je vais deja aller dans ce sens pour voir un peu.

    Citation Envoyé par Totanne
    Plus que dans l'event Paint, une bonne fois pour toute à l'initialisation du label en créant un bitmap que tu affecte à la propriété image du label.
    Propriété Text à "" et texte a afficher dans la propriété Tag par ex.
    Un exemple totanne ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Effet fade out sur un texte dynamique?
    Par melonmaudic dans le forum Flash
    Réponses: 12
    Dernier message: 04/12/2006, 20h56
  2. Réponses: 2
    Dernier message: 07/08/2006, 21h21
  3. effet d'ombre sur un tableau
    Par jani dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 10/11/2005, 10h16
  4. [C#]Evénement sur label
    Par Hmonglee dans le forum Windows Forms
    Réponses: 3
    Dernier message: 02/11/2005, 12h05
  5. faire un effet de transparence sur un bloc div ?
    Par piff62 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 08/03/2005, 00h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo