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
Partager