Problème avec ma fonction de dégradé [Résolu]

Duke49 553 Messages postés jeudi 12 octobre 2006Date d'inscription 6 juin 2015 Dernière intervention - 31 oct. 2010 à 09:58 - Dernière réponse : Duke49 553 Messages postés jeudi 12 octobre 2006Date d'inscription 6 juin 2015 Dernière intervention
- 31 oct. 2010 à 16:02
salut all,

tout semble bon sauf myBrush, il me met:
Erreur 1 La variable 'myBrush' masque une variable dans un bloc englobant. G:\Accueil.vb 27 15 Test


Imports SDGraphics = System.Drawing.Graphics
Imports SDRectangle = System.Drawing.Rectangle
Imports SD2Drawing2D = System.Drawing.Drawing2D
Imports SDColor = System.Drawing.Color

Public Class MAIN_Accueil

    Private Sub Degrader(ByVal colorA As SDColor, ByVal colorB As SDColor)
        Dim myDraw As SDGraphics = Me.CreateGraphics
        Dim myRect As SDRectangle
        Dim myBlend As SD2Drawing2D.ColorBlend
        Dim myColor() As SDColor
        Dim myGrad As SD2Drawing2D.LinearGradientBrush
        Dim myBrush As System.Drawing.Brush

        myDraw.SmoothingMode = Drawing.Drawing2D.SmoothingMode.HighSpeed

        myRect = New System.Drawing.Rectangle(0, 0, Me.Width, Me.Height)
        myBlend = New System.Drawing.Drawing2D.ColorBlend()

        myColor = New SDColor() {colorA, colorB}
        myBlend.Colors = myColor

        Dim bPts As Single() = New Single() {0, 1.0}
        myBlend.Positions = bPts

        Using myBrush As New SD2Drawing2D.LinearGradientBrush(myRect, SDColor.White, SDColor.Black, SD2Drawing2D.LinearGradientMode.Horizontal)
            myBrush.InterpolationColors = myBlend
            myDraw.FillRectangle(myBrush, myRect)
        End Using

        myDraw.Dispose()
    End Sub


PS: je débute en .NET si vous avez des conseils pour éviter les imports...
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Duke49 553 Messages postés jeudi 12 octobre 2006Date d'inscription 6 juin 2015 Dernière intervention - 31 oct. 2010 à 16:02
3
Merci
MERCI CHRISTONI ^^ (oui je sais lire henry: im noob vb.net)

A exécuter dans votre form_paint:
Imports SDGraphics = System.Drawing.Graphics
Imports SDRectangle = System.Drawing.Rectangle
Imports SD2Drawing2D = System.Drawing.Drawing2D
Imports SDColor = System.Drawing.Color

    Private Sub Degrader(ByVal colorA As SDColor, ByVal colorB As SDColor)
        Dim myDraw As SDGraphics = Me.CreateGraphics
        Dim myRect As SDRectangle
        Dim myBlend As SD2Drawing2D.ColorBlend
        Dim myColor() As SDColor

        myDraw.SmoothingMode = Drawing.Drawing2D.SmoothingMode.HighSpeed

        myRect = New System.Drawing.Rectangle(0, 0, Me.Width, Me.Height)
        myBlend = New System.Drawing.Drawing2D.ColorBlend()

        myColor = New SDColor() {colorA, colorB}
        myBlend.Colors = myColor

        Dim bPts As Single() = New Single() {0, 1.0}
        myBlend.Positions = bPts

        Dim myBrush As New SD2Drawing2D.LinearGradientBrush(myRect, SDColor.White, SDColor.Black, SD2Drawing2D.LinearGradientMode.Vertical)
        myBrush.InterpolationColors = myBlend
        myDraw.FillRectangle(myBrush, myRect)

        myDraw.Dispose()
    End Sub

Merci Duke49 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 73 internautes ce mois-ci

Commenter la réponse de Duke49
Duke49 553 Messages postés jeudi 12 octobre 2006Date d'inscription 6 juin 2015 Dernière intervention - 31 oct. 2010 à 10:47
0
Merci
y a plus d'aide en vb6 qu'en .net
Commenter la réponse de Duke49
NHenry 14250 Messages postés vendredi 14 mars 2003Date d'inscription 10 août 2018 Dernière intervention - 31 oct. 2010 à 12:04
0
Merci
Bonjour,

Relis ton code :
Imports SDGraphics = System.Drawing.Graphics
Imports SDRectangle = System.Drawing.Rectangle
...

Public Class MAIN_Accueil

    Private Sub Degrader(ByVal colorA As SDColor, ByVal colorB As SDColor)
...
        Dim myBrush As System.Drawing.Brush
...

        Using myBrush As New SD2Drawing2D.LinearGradientBrush(myRect, SDColor.White, SDColor.Black, SD2Drawing2D.LinearGradientMode.Horizontal)
...
        End Using

        myDraw.Dispose()
    End Sub


Mon site
Commenter la réponse de NHenry
cs_christoni 140 Messages postés mardi 25 novembre 2003Date d'inscription 1 novembre 2010 Dernière intervention - 31 oct. 2010 à 12:32
0
Merci
Bonjour,
Des variables ayant le même nom et pointant vers des objets différents.
A tester :
Private Sub Degrader(ByVal colorA As SDColor, ByVal colorB As SDColor)
        Dim myDraw As SDGraphics = Me.CreateGraphics
        Dim myRect As SDRectangle
        Dim myBlend As SD2Drawing2D.ColorBlend
        Dim myColor() As SDColor
        'Dim myGrad As SD2Drawing2D.LinearGradientBrush
        'Dim myBrush As System.Drawing.Brush

        myDraw.SmoothingMode = Drawing.Drawing2D.SmoothingMode.HighSpeed

        myRect = New System.Drawing.Rectangle(0, 0, Me.Width, Me.Height)
        myBlend = New System.Drawing.Drawing2D.ColorBlend()

        myColor = New SDColor() {colorA, colorB}
        myBlend.Colors = myColor

        Dim bPts As Single() = New Single() {0, 1.0}
        myBlend.Positions = bPts

        Using myGrad As New SD2Drawing2D.LinearGradientBrush(myRect, SDColor.White, SDColor.Black, SD2Drawing2D.LinearGradientMode.Horizontal)
            myGrad.InterpolationColors = myBlend
            myDraw.FillRectangle(myGrad, myRect)
        End Using

        myDraw.Dispose()
    End Sub
Commenter la réponse de cs_christoni

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.