+ Répondre à la discussion
Affichage des résultats 1 à 1 sur 1
  1. #1
    Nouveau Membre du Club
    Inscrit en
    septembre 2005
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : septembre 2005
    Messages : 142
    Points : 29
    Points
    29

    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 :
    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
    • Type de fichier : png gdi.png (456 octets, 16 affichages)

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •