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 6 et antérieur Discussion :

Probleme GdiPlus Gradient


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 174
    Points : 70
    Points
    70
    Par défaut Probleme GdiPlus Gradient
    Bonjour a tous,

    un petit soucis avec GdiPlus. Ci-dessous le code qui crée un rectangle
    et le rempli avec un degradé radial. Mon probleme est que les bords droit et bas
    ne sont jamais completement blanc (RGB 255,255,255), seulement les bords
    gauche et haut. Je parle des dernieres lignes des "Bandes de Mach" du dégradé.
    J'ai essayé de permuter le noir et le blanc, et c'etait le noir qui n'etait pas a zéro.
    Le degradé est généré automatiquement avec "GdipCreatePathGradientFromPath". J'ai essayé
    des fonctions comme "GdipGetPathGradientCenterColor" pour placer le centre du degradé (radial),
    ou "GdipScalePathGradientTransform" pour le redimensionné, sans succès. La necessité d'avoir un
    dégradé bien equilibré , tient a l'utilisation ensuite de la fonction "GdipSetPathGradientFocusScales",
    qui permet d'elargir le dégradé, pour par exemple faire un bouton a cliquer (Bevel).
    J'ai join une capture d'écran.

    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
    Dim Path1 As Long
    Dim Gradient1 As Long
     
    Dim hTargetGraphics As Long
    Dim lpSI As GdiplusStartupInput
    Dim hGdipToken As Long
     
    Form1.Picture1.AutoRedraw = True
     
    lpSI.GdiplusVersion = 1
    GdiplusStartup hGdipToken, lpSI
     
    If GdipCreateFromHDC(Form1.Picture1.hdc, hTargetGraphics) = 0& Then
     
        Call GdipGraphicsClear(hTargetGraphics, CC_to_GDI(&H888888))
     
        GdipCreatePath 0&, Path1
     
        GdipAddPathRectangle Path1, 0, 0, 60, 20
        GdipCreatePathGradientFromPath Path1, Gradient1
        GdipSetPathGradientCenterColor Gradient1, CC_to_GDI(vbBlack)
        GdipSetPathGradientSurroundColorsWithCount Gradient1, CC_to_GDI(vbWhite), 1
        GdipFillPath hTargetGraphics, Gradient1, Path1
     
        GdipDeleteBrush Gradient1
        GdipDeletePath Path1
        GdipDeleteGraphics hTargetGraphics
    End If
     
    GdiplusShutdown hGdipToken
     
    Form1.Picture1.Picture = Form1.Picture1.image
     
    Form1.Picture1.AutoRedraw = False
    Images attachées Images attachées  

Discussions similaires

  1. probleme avec gdiplus
    Par looping dans le forum Langage
    Réponses: 3
    Dernier message: 28/02/2013, 16h49
  2. Probleme gradient conjugue..
    Par leetimber5 dans le forum Débuter
    Réponses: 8
    Dernier message: 22/11/2009, 14h39
  3. Réponses: 6
    Dernier message: 14/08/2008, 10h03
  4. Réponses: 4
    Dernier message: 30/05/2007, 17h44

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