Bonjour,Bonjour,Je souhaite modifier les propriété de remplissage de type gradient
d'une formeJ'arrive à le faire pour des remplissages simple, mais pas pour un
gradient.J'utilise XRay pour trouver les propriétés, ainsi, j'ai trouvé la
propriété FillGradient de l'objet, qui est fait une structureCette structure comporte différentes propriétés dont StartColor et
EndColor, ce qui correspond bien aux deux propriétés que je veux
changerVoilà le petit bout de code que j'ai fait :Dim monDocument as object, maPage as
object, lesPages as objectDim lesArrPlans as object, unArrPlan as object, bgArrPlan as
objectDim maForme as objectDim Gradient as objectConst col1 as Long = 082*65536 + 144 * 256 + 139 'TurquoiseConst col2 as Long = 229*65536 + 226 * 256 + 202 'Cool grayConst col3 as Long = 071*65536 + 045 * 256 + 051 'Brownish
purpuleConst col4 as Long = 231*65536 + 071 * 256 + 046 'orange-redConst colBl as Long = 255*65536 + 255 * 256 + 255 'BlancmonDocument = thisComponentlesArrPlans = monDocument.MasterPagesunArrPlan = lesArrPlans(1)maForme = unArrPlan.GetByName("MD")Gradient = maForme.FillGradientGradient.StartColor = col2Gradient.EndColor = col4Mon problème vient peut-être du fait que j'accède à une structure et
non à des propriétés, et que je le fais mal. Un peu comme la
position d'un objetPierre
oups mon message est très mal passé...
Le revoilà (j'espère)
Je souhaite modifier les propriétés de remplissage de type gradient d'une forme.
J'arrive à le faire pour des remplissages simples, mais pas pour un gradient.
J'utilise XRay pour trouver les propriétés, ainsi, j'ai trouvé la propriété FillGradient de l'objet, qui est fait une structure.
Cette structure comporte différentes propriétés dont StartColor et EndColor, ce qui correspond bien aux deux propriétés que je veux changer.
Voilà le petit bout de code que j'ai fait :
Dim monDocument as object, maPage as object, lesPages as objectDim lesArrPlans as object, unArrPlan as object, bgArrPlan as object
Dim maForme as object
Dim Gradient as object
Const col1 as Long = 082*65536 + 144 * 256 + 139 'Turquoise
Const col2 as Long = 229*65536 + 226 * 256 + 202 'Cool gray
Const col3 as Long = 071*65536 + 045 * 256 + 051 'Brownish purpule
Const col4 as Long = 231*65536 + 071 * 256 + 046 'orange-red
Const colBl as Long = 255*65536 + 255 * 256 + 255 'Blanc
monDocument = thisComponent
lesArrPlans = monDocument.MasterPages
unArrPlan = lesArrPlans(1)
maForme = unArrPlan.GetByName("MD")
Gradient = maForme.FillGradient
Gradient.StartColor = col2
Gradient.EndColor = col4
Mon problème vient peut-être du fait que j'accède à une structure et non à des propriétés, et que je le fais mal. Un peu comme la position d'un objet
Pierre
Pierre,
(je renvoie, mal parti tout à l'heure...)
oups mon message est très mal passé...
Le revoilà (j'espère)Je souhaite modifier les propriétés de remplissage de type gradient d'une forme.
J'arrive à le faire pour des remplissages simples, mais pas pour un gradient.
J'utilise XRay pour trouver les propriétés, ainsi, j'ai trouvé la propriété FillGradient de l'objet, qui est fait une structure.
Cette structure comporte différentes propriétés dont StartColor et EndColor, ce qui correspond bien aux deux propriétés que je veux changer.
Voilà le petit bout de code que j'ai fait :Dim monDocument as object, maPage as object, lesPages as objectDim lesArrPlans as object, unArrPlan as object, bgArrPlan as object
Dim maForme as object
Dim Gradient as object
Const col1 as Long = 082*65536 + 144 * 256 + 139 'Turquoise
Const col2 as Long = 229*65536 + 226 * 256 + 202 'Cool gray
Const col3 as Long = 071*65536 + 045 * 256 + 051 'Brownish purpule
Const col4 as Long = 231*65536 + 071 * 256 + 046 'orange-red
Const colBl as Long = 255*65536 + 255 * 256 + 255 'Blanc
monDocument = thisComponent
lesArrPlans = monDocument.MasterPages
unArrPlan = lesArrPlans(1)
maForme = unArrPlan.GetByName("MD")
Gradient = maForme.FillGradient
Gradient.StartColor = col2
Gradient.EndColor = col4Mon problème vient peut-être du fait que j'accède à une structure et non à des propriétés, et que je le fais mal. Un peu comme la position d'un objet
oui, dans le cas des structures, il faut :
1. créer une structure autonome de même type,
2. initialiser cette structure à partir de celle de l'objet,
3. faire les modifs voulues dans la structure "externe",
et 4. affecter la structure externe mise à jour à celle de l'objet.
Si vous répondez, merci de penser à utiliser la fonction "répondre à tous" de votre logiciel de courrier électronique de façon que la liste reçoive une copie de votre réponse.
Bien cordialement,
Bonjour,
J'ai finalement réussi à le faire, je vais mettre le bout de code, ça doit correspondre à ce qui est dit. j'avoue que je deviens un pro du copier-coller sans comprendre.
Il faut initialiser l’ensemble de propriétés du gradient, sinon, celles qui ne sont forcées sont remise à zéro
J'arrive au bout d'une belle macro, il me reste à localiser un objet graphique qui se trouve dans une zone des diapos et à modifier un style de présentation, j'arrive à modifier les styles standards, mais pas ceux-là
Pierre
Voilà le petit bout de code qui fait le boulot
Dim Gradient as new com.sun.star.awt.Gradient
Là je ne comprends pas ce que je fais. J'imagine que je crée un machin,une pièce qui s’emboite bien le moment venu
Gradient.Style = 2
Gradient.Angle = 0
Gradient.Border = 0
Gradient.XOffset = 25
Gradient.YOffset = 0
Gradient.StartIntensity = 100
Gradient.EndIntensity = 100
Gradient.StepCount = 64
Gradient.StartColor = col2
Gradient.EndColor = col3
maForme.FillGradient = Gradient
C'est peut être bien compliqué, mais ça fait le taf
Pierre
Hello Pierre,
Tu ne crées pas un machin, mais une structure complexe de données qui te permet de définir les paramètres d'un Gradient.
La définition de ces paramètres se fait de .Style à .EndColor. Tout me semble compréhensible, sauf pour moi col2 et col3 qui doivent être des variables que tu définis par ailleurs.
A la dernière ligne, maForme.FillGradient, tu t'adresses à ta forme et tu lui demandes d'appliquer le gradient que tu viens de définir (je crois).
Note bien que tu peux complexifier le gradient, puisque tu peux définir un angle (de propagation je suppose), un point de démarrage, une variation d'intensité, le nombre de pas de calcul etc. C'est très chouette, cette fonction, je suis content que tu l'aies découverte
Bonne journée,
Thierry