1 pièce(s) jointe(s)
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 |