Structure des dessins
- Structure des dessins
- Édition des objets de dessin
- Présentations
Apache OpenOffice ne limite pas le nombre de pages que peut contenir un dessin. Vous pouvez concevoir chaque page individuellement. En outre, vous pouvez ajouter autant d'éléments de dessin que vous le souhaitez à une page.
Pages
Les pages d'un dessin sont disponibles via la liste DrawPages. Vous pouvez accéder aux différentes pages soit par leur numéro, soit par leur nom. Si un document contient une seule page, nommée Slide 1, les exemples suivants seront équivalents.
Exemple 1 :
Dim Doc As Object Dim Page As Object Doc = StarDesktop.CurrentComponent Page = Doc.drawPages(0)
Exemple 2 :
Dim Doc As Object Dim Page As Object Doc = StarDesktop.CurrentComponent Page = Doc.drawPages.getByName("Slide 1")
Dans l'exemple 1, on accède à la page par son numéro (la numérotation commençant à 0). Dans le second, on y accède par son nom et à l'aide de la méthode getByName.
Dim sUrl As String, sFilter As String Dim sOptions As String Dim oSheets As Object, oSheet As Object oSheets = oDocument.Sheets If oSheets.hasByName("Link") Then oSheet = oSheets.getByName("Link") Else oSheet = oDocument.createInstance("com.sun.star.sheet.Spreadsheet") oSheets.insertByName("Link", oSheet) oSheet.IsVisible = False End If
L'appel ci-dessus retourne un objet Page prenant en charge le service com.sun.star.drawing.DrawPage. Ce service reconnaît les propriétés suivantes :
- BorderLeft (Long)
- bordure gauche en centièmes de millimètre.
- BorderRight (Long)
- bordure droite en centièmes de millimètre.
- BorderTop (Long)
- bordure supérieure en centièmes de millimètre.
- BorderBottom (Long)
- bordure inférieure en centièmes de millimètre.
- Width (Long)
- largeur de page en centièmes de millimètre.
- Height (Long)
- hauteur de page en centièmes de millimètre.
- Number (Short)
- nombre de pages (la numérotation commençant à 1), en lecture seule.
- Orientation (Enum)
- orientation de la page correspondant à l'énumération com.sun.star.view.PaperOrientation).
En cas de modification de ces paramètres, toutes les pages du document sont affectées.
L'exemple suivant définit la taille de page du dessin qui vient d'être ouvert sur 20 × 20 centimètres, avec une marge de 0,5 centimètre :
Dim Doc As Object Dim Page As Object Doc = StarDesktop.CurrentComponent Page = Doc.drawPages(0) Page.BorderLeft = 500 Page.BorderRight = 500 Page.BorderTop = 500 Page.BorderBottom = 500 Page.Width = 20000 Page.Height = 20000
Propriétés élémentaires des objets de dessin
Les objets de dessin comprennent des formes (rectangles, cercles, etc.), des lignes et des objets texte. Ils partagent tous un certain nombre de caractéristiques communes et prennent en charge le service com.sun.star.drawing.Shape. Ce service définit les propriétés Size et Position d'un objet de dessin.
D'autres services fournis par Apache OpenOffice Basic permettent de modifier ces propriétés, en appliquant du formatage ou des remplissages par exemple. Les options de formatage disponibles dépendent du type d'objet de dessin.
L'exemple suivant crée et insère un rectangle dans un dessin :
Dim Doc As Object Dim Page As Object Dim RectangleShape As Object Dim Point As New com.sun.star.awt.Point Dim Size As New com.sun.star.awt.Size Doc = StarDesktop.CurrentComponent Page = Doc.drawPages(0) Point.x = 1000 Point.y = 1000 Size.Width = 10000 Size.Height = 10000 RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape") RectangleShape.Size = Size RectangleShape.Position = Point Page.add(RectangleShape)
Dans cet exemple, le document ouvert est déterminé à l'aide de l'appel StarDesktop.CurrentComponent. L'objet Document déterminé de cette manière retourne la première page du dessin via l'appel drawPages(0).
Les structures Point et Size contenant le point d'origine (angle gauche) et la taille de l'objet de dessin sont ensuite initialisées. Les longueurs sont spécifiées en centièmes de millimètre.
À l'aide de l'appel Doc.createInstance, le code du programme crée ensuite l'objet de dessin rectangulaire tel qu'il a été spécifié par le service com.sun.star.drawing.RectangleShape. L'objet de dessin est ensuite assigné à une page à l'aide d'un appel Page.add.
Propriétés de remplissage
Cette section décrit quatre services et, pour chacun, l'exemple de code utilise un élément de forme rectangulaire associé à différents types de formatage. Les propriétés de remplissage sont combinées dans le service com.sun.star.drawing.FillProperties.
Au moment de remplir une zone, Apache OpenOffice reconnaît quatre types de formatage principaux. Le cas le plus simple est celui d'un remplissage uni. Les options définissant des dégradés de couleurs et des hachures permettent de créer d'autres couleurs. Le quatrième cas de figure consiste à projeter des images existantes dans la zone à remplir.
Le mode remplissage d'un objet de dessin se définit avec la propriété FillStyle. Les valeurs autorisées sont définies dans com.sun.star.drawing.FillStyle.
Remplissages unis
La principale propriété des remplissages unis est :
- FillColor (Long)
- couleur de remplissage de la zone.
Pour utiliser le mode Remplissage, vous devez définir la propriété FillStyle sur le mode de remplissage SOLID.
L'exemple suivant crée une forme rectangulaire et la remplit de rouge (valeur RVB 255, 0, 0) :
Dim Doc As Object Dim Page As Object Dim RectangleShape As Object Dim Point As New com.sun.star.awt.Point Dim Size As New com.sun.star.awt.Size Point.x = 1000 Point.y = 1000 Size.Width = 10000 Size.Height = 10000 Doc = StarDesktop.CurrentComponent Page = Doc.drawPages(0) RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape") RectangleShape.Size = Size RectangleShape.Position = Point RectangleShape.FillStyle = com.sun.star.drawing.FillStyle.SOLID RectangleShape.FillColor = RGB(255,0,0) Page.add(RectangleShape)
Dégradé de couleurs
Si vous définissez la propriété FillStyle sur GRADIENT, vous pouvez appliquer un dégradé de couleurs à toutes les zones à remplir dans un document Apache OpenOffice.
Pour appliquer un dégradé de couleurs prédéfini, il suffit d'assigner le nom associé de la propriété FillTransparenceGradientName. Pour définir votre propre dégradé de couleurs, vous devez constituer une structure com.sun.star.awt.Gradient à assigner à la propriété FillGradient. Cette propriété fournit les options suivantes :
- Style (Enum)
- type de dégradé (linéaire ou radial, par exemple), avec des valeurs par défaut correspondant à com.sun.star.awt.GradientStyle.
- StartColor (Long)
- couleur de début du dégradé de couleurs.
- EndColor (Long)
- couleur de fin du dégradé de couleurs.
- Angle (Short)
- angle du dégradé de couleurs en dixièmes de degré.
- XOffset (Short)
- coordonnée X correspondant au point de départ du dégradé de couleurs, exprimée en centièmes de millimètre.
- YOffset (Short)
- coordonnée Y correspondant au point de départ du dégradé de couleurs, exprimée en centièmes de millimètre.
- StartIntensity (Short)
- intensité de StartColor exprimée en pourcentage (dans Apache OpenOffice Basic, vous pouvez également spécifier des valeurs supérieures à 100 %).
- EndIntensity (Short)
- intensité de EndColor exprimée en pourcentage (dans Apache OpenOffice Basic, vous pouvez également spécifier des valeurs supérieures à 100 %).
- StepCount (Short)
- nombre de couleurs intermédiaires utilisées par Apache OpenOffice pour calculer les dégradés.
L'exemple suivant illustre l'utilisation de dégradés de couleurs avec la structure com.sun.star.awt.Gradient :
Dim Doc As Object Dim Page As Object Dim RectangleShape As Object Dim Point As New com.sun.star.awt.Point Dim Size As New com.sun.star.awt.Size Dim Gradient As New com.sun.star.awt.Gradient Point.x = 1000 Point.y = 1000 Size.Width = 10000 Size.Height = 10000 Doc = StarDesktop.CurrentComponent Page = Doc.drawPages(0) RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape") RectangleShape.Size = Size RectangleShape.Position = Point Gradient.Style = com.sun.star.awt.GradientStyle.LINEAR Gradient.StartColor = RGB(255,0,0) Gradient.EndColor = RGB(0,255,0) Gradient.StartIntensity = 150 Gradient.EndIntensity = 150 Gradient.Angle = 450 Gradient.StepCount = 100 RectangleShape.FillStyle = com.sun.star.drawing.FillStyle.GRADIENT RectangleShape.FillGradient = Gradient Page.add(RectangleShape)
Cet exemple crée un dégradé de couleurs linéaire (Style = LINEAR). Le dégradé commence en rouge (StartColor) dans l'angle supérieur gauche et finit, en suivant un angle de 45 degrés (Angle), en vert (EndColor) dans l'angle inférieur droit. L'intensité des couleurs initiale et finale est de 150 pour cent (StartIntensity et EndIntensity) , d'où un effet de couleurs apparemment plus claires que les valeurs spécifiées dans les propriétés StartColor et EndColor. Le dégradé de couleurs est constitué de cent couleurs intermédiaires (StepCount).
Hachures
Pour créer un remplissage hachuré, vous devez définir la propriété FillStyle sur HATCH. Le code de programme de définition des hachures ressemble beaucoup à celui des dégradés de couleurs. La structure auxiliaire, com.sun.star.drawing.Hatch en l'occurrence, sert ici à définir l'apparence des hachures. La structure de hachures possède les propriétés suivantes :
- Style (Enum)
- type de hachure (simple, quadrillée ou quadrillée en diagonale), avec des valeurs par défaut correspondant à com.sun.star.awt.HatchStyle).
- Color (Long)
- couleur des lignes.
- Distance (Long)
- distance entre les lignes en centièmes de millimètre.
- Angle (Short)
- angle de la hachure en dixièmes de degré.
L'exemple suivant illustre l'utilisation d'une structure de hachures :
Dim Doc As Object Dim Page As Object Dim RectangleShape As Object Dim Point As New com.sun.star.awt.Point Dim Size As New com.sun.star.awt.Size Dim Hatch As New com.sun.star.drawing.Hatch Point.x = 1000 Point.y = 1000 Size.Width = 10000 Size.Height = 10000 Doc = StarDesktop.CurrentComponent Page = Doc.drawPages(0) RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape") RectangleShape.Size = Size RectangleShape.Position = Point RectangleShape.FillStyle = com.sun.star.drawing.FillStyle.HATCH Hatch.Style = com.sun.star.drawing.HatchStyle.SINGLE Hatch.Color = RGB(64,64,64) Hatch.Distance = 20 Hatch.Angle = 450 RectangleShape.FillHatch = Hatch Page.add(RectangleShape)
Ce code crée une structure de hachures simple (HatchStyle = SINGLE) et fait pivoter les lignes de cette structure sur 45 degrés (Angle). Les lignes sont gris foncé (Color) et espacées de 0,2 millimètres (Distance).
Bitmaps
Pour utiliser une projection bitmap comme remplissage, vous devez définir la propriété FillStyle sur BITMAP. Si le bitmap est déjà disponible dans Apache OpenOffice, il vous suffit de spécifier son nom dans la propriété FillBitMapName et son style d'affichage (simple, quadrilé ou étiré) dans la propriété FillBitmapMode. Les valeurs par défaut correspondent à com.sun.star.drawing.BitmapMode.
Pour utiliser un fichier bitmap externe, vous pouvez spécifier son URL dans la propriété FillBitmapURL.
L'exemple suivant crée un rectangle et dispose le bitmap Sky disponible dans Apache OpenOffice en quadrillage, afin de remplir le rectangle :
Dim Doc As Object Dim Page As Object Dim RectangleShape As Object Dim Point As New com.sun.star.awt.Point Dim Size As New com.sun.star.awt.Size Point.x = 1000 Point.y = 1000 Size.Width = 10000 Size.Height = 10000 Doc = StarDesktop.CurrentComponent Page = Doc.drawPages(0) RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape") RectangleShape.Size = Size RectangleShape.Position = Point RectangleShape.FillStyle = com.sun.star.drawing.FillStyle.BITMAP RectangleShape.FillBitmapName = "Sky" RectangleShape.FillBitmapMode = com.sun.star.drawing.BitmapMode.REPEAT Page.add(RectangleShape)
Transparence
Vous avez la possibilité d'adapter la transparence des différents remplissages que vous appliquez. La manière la plus simple de modifier la transparence d'un élément de dessin consiste à utiliser la propriété FillTransparence.
L'exemple suivant crée un rectangle rouge avec une transparence de 50 %.
Dim Doc As Object Dim Page As Object Dim RectangleShape As Object Dim Point As New com.sun.star.awt.Point Dim Size As New com.sun.star.awt.Size Point.x = 1000 Point.y = 1000 Size.Width = 10000 Size.Height = 10000 Doc = StarDesktop.CurrentComponent Page = Doc.drawPages(0) RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape") RectangleShape.Size = Size RectangleShape.Position = Point RectangleShape.FillStyle = com.sun.star.drawing.FillStyle.SOLID RectangleShape.FillTransparence = 50 RectangleShape.FillColor = RGB(255,0,0) Page.add(RectangleShape)
Pour rendre le remplissage transparent, définissez la propriété FillTransparence sur 100.
Outre la propriété FillTransparence, le service com.sun.star.drawing.FillProperties fournit également la propriété FillTransparenceGradient. Elle sert à définir un dégradé pour la transparence d'une zone à remplir.
Propriétés de ligne
Tous les objets de dessin susceptibles de présenter une ligne de bordure prennent en charge le service com.sun.star.drawing.LineStyle. Ce service fournit notamment les propriétés suivantes :
- LineStyle (Enum)
- type de ligne, avec des valeurs par défaut correspondant à com.sun.star.drawing.LineStyle).
- LineColor (Long)
- couleur de ligne.
- LineTransparence (Short)
- transparence de ligne.
- LineWidth (Long)
- épaisseur de ligne en centièmes de millimètre.
- LineJoint (Enum)
- transitions vers les points de connexion, avec des valeurs par défaut correspondant à com.sun.star.drawing.LineJoint.
L'exemple suivant crée un rectangle avec une bordure pleine (LineStyle = SOLID) de 5 millimètres d'épaisseur (LineWidth) et une transparence de 50 %. Les arêtes droite et gauche de la ligne se prolongent jusqu'à ce qu'elles se rejoignent (LineJoint = MITER) pour former un angle droit.
Dim Doc As Object Dim Page As Object Dim RectangleShape As Object Dim Point As New com.sun.star.awt.Point Dim Size As New com.sun.star.awt.Size Point.x = 1000 Point.y = 1000 Size.Width = 10000 Size.Height = 10000 Doc = StarDesktop.CurrentComponent Page = Doc.drawPages(0) RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape") RectangleShape.Size = Size RectangleShape.Position = Point RectangleShape.LineColor = RGB(128,128,128) RectangleShape.LineTransparence = 50 RectangleShape.LineWidth = 500 RectangleShape.LineJoint = com.sun.star.drawing.LineJoint.MITER RectangleShape.LineStyle = com.sun.star.drawing.LineStyle.SOLID Page.add(RectangleShape)
Outre les propriétés indiquées précédemment, le service com.sun.star.drawing.LineStyle fournit des options permettant de dessiner des lignes pointillées. Pour plus d'informations, reportez-vous à la référence de l'API Apache OpenOffice.
Propriétés de texte (objets de dessin)
Les services com.sun.star.style.CharacterProperties et com.sun.star.style.ParagraphProperties permettent de formater du texte dans des objets de dessin. Ces services portent sur les caractères individuels et sur les paragraphes. Ils sont traités en détail au chapitre Documents texte.
L'exemple suivant permet d'insérer du texte dans un rectangle et d'en formater la police à l'aide du service com.sun.star.style.CharacterProperties.
Dim Doc As Object Dim Page As Object Dim RectangleShape As Object Dim Point As New com.sun.star.awt.Point Dim Size As New com.sun.star.awt.Size Point.x = 1000 Point.y = 1000 Size.Width = 10000 Size.Height = 10000 Doc = StarDesktop.CurrentComponent Page = Doc.drawPages(0) RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape") RectangleShape.Size = Size RectangleShape.Position = Point Page.add(RectangleShape) RectangleShape.String = "This is a test" RectangleShape.CharWeight = com.sun.star.awt.FontWeight.BOLD RectangleShape.CharFontName = "Arial"
Ce code fait appel à la propriété String du rectangle pour insérer le texte, ainsi qu'aux propriétés CharWeight et CharFontName du service com.sun.star.style.CharacterProperties pour formater la police du texte.
Le texte ne peut être inséré qu'une fois l'objet de dessin ajouté à la page de dessin. Vous pouvez également positionner et formater du texte dans un objet de dessin à l'aide du service com.sun.star.drawing.Text. Ce service fournit notamment les propriétés suivantes :
- TextAutoGrowHeight (Boolean)
- adapte la hauteur de l'élément de dessin au texte qu'il contient.
- TextAutoGrowWidth (Boolean)
- adapte la largeur de l'élément de dessin au texte qu'il contient.
- TextHorizontalAdjust (Enum)
- position horizontale du texte à l'intérieur de l'élément de dessin, avec des valeurs par défaut correspondant à com.sun.star.drawing.TextHorizontalAdjust.
- TextVerticalAdjust (Enum)
- position verticale du texte à l'intérieur de l'élément de dessin, avec des valeurs par défaut correspondant à com.sun.star.drawing.TextVerticalAdjust.
- TextLeftDistance (Long)
- écart séparant le bord gauche de l'élément de dessin et le texte, exprimé en centièmes de millimètre.
- TextRightDistance (Long)
- écart séparant le bord droit de l'élément de dessin et le texte, exprimé en centièmes de millimètre.
- TextUpperDistance (Long)
- écart séparant le bord supérieur de l'élément de dessin et le texte, exprimé en centièmes de millimètre.
- TextLowerDistance (Long)
- écart séparant le bord inférieur de l'élément de dessin et le texte, exprimé en centièmes de millimètre.
L'exemple suivant illustre l'utilisation des propriétés nommées.
Dim Doc As Object Dim Page As Object Dim RectangleShape As Object Dim Point As New com.sun.star.awt.Point Dim Size As New com.sun.star.awt.Size Point.x = 1000 Point.y = 1000 Size.Width = 10000 Size.Height = 10000 Doc = StarDesktop.CurrentComponent Page = Doc.drawPages(0) RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape") RectangleShape.Size = Size RectangleShape.Position = Point Page.add(RectangleShape) RectangleShape.String = "This is a test" ' May only take place after Page.add! RectangleShape.TextVerticalAdjust = com.sun.star.drawing.TextVerticalAdjust.TOP RectangleShape.TextHorizontalAdjust = com.sun.star.drawing.TextHorizontalAdjust.LEFT RectangleShape.TextLeftDistance = 300 RectangleShape.TextRightDistance = 300 RectangleShape.TextUpperDistance = 300 RectangleShape.TextLowerDistance = 300
Ce code insère un élément de dessin dans une page, puis ajoute du texte dans l'angle supérieur gauche de celui-ci à l'aide des propriétés TextVerticalAdjust et TextHorizontalAdjust. L'écart minimum entre le texte et le bord de l'objet de dessin est de trois millimètres.
Propriétés d'ombre
Vous pouvez ajouter une ombre à la plupart des objets de dessin en utilisant le service com.sun.star.drawing.ShadowProperties. Ce service fournit les propriétés suivantes :
- Shadow (Boolean)
- active l'ombre.
- ShadowColor (Long)
- couleur d'ombre.
- ShadowTransparence (Short)
- transparence de l'ombre.
- ShadowXDistance (Long)
- écart vertical séparant l'ombre et l'objet de dessin, exprimé en centièmes de millimètre.
- ShadowYDistance (Long)
- écart horizontal séparant l'ombre et l'objet de dessin, exprimé en centièmes de millimètre.
L'exemple suivant crée un rectangle avec une ombre décalée de 2 millimètres verticalement et horizontalement. L'ombre prend une couleur gris foncé avec une transparence de 50 %.
Dim Doc As Object Dim Page As Object Dim RectangleShape As Object Dim Point As New com.sun.star.awt.Point Dim Size As New com.sun.star.awt.Size Point.x = 1000 Point.y = 1000 Size.Width = 10000 Size.Height = 10000 Doc = StarDesktop.CurrentComponent Page = Doc.drawPages(0) RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape") RectangleShape.Size = Size RectangleShape.Position = Point RectangleShape.Shadow = True RectangleShape.ShadowColor = RGB(192,192,192) RectangleShape.ShadowTransparence = 50 RectangleShape.ShadowXDistance = 200 RectangleShape.ShadowYDistance = 200 Page.add(RectangleShape)
Présentation de différents objets de dessin
Formes rectangulaires
Les objets de forme rectangulaire (com.sun.star.drawing.RectangleShape) prennent en charge les services suivants pour leur formatage :
- Fill properties
- com.sun.star.drawing.FillProperties.
- Line properties
- com.sun.star.drawing.LineProperties.
- Text properties
- com.sun.star.drawing.Text (avec com.sun.star.style.CharacterProperties et com.sun.star.style.ParagraphProperties).
- Shadow properties
- com.sun.star.drawing.ShadowProperties.
- CornerRadius (Long)
- rayon d'arrondissement des angles en centièmes de millimètre.
Cercles et ellipses
Le service com.sun.star.drawing.EllipseShape gère les cercles et les ellipses. Il prend en charge les services suivants :
- Fill properties
- com.sun.star.drawing.FillProperties.
- Line properties
- com.sun.star.drawing.LineProperties.
- Text properties
- com.sun.star.drawing.Text (avec com.sun.star.style.CharacterProperties et com.sun.star.style.ParagraphProperties).
- Shadow properties
- com.sun.star.drawing.ShadowProperties.
Outre ces services, les cercles et les ellipses fournissent les propriétés suivantes :
- CircleKind (Enum)
- type de cercle ou d'ellipse, avec des valeurs par défaut correspondant à com.sun.star.drawing.CircleKind.
- CircleStartAngle (Long)
- angle de départ exprimé en dixièmes de degré (pour les segments de cercle ou d'ellipse uniquement).
- CircleEndAngle (Long)
- angle final exprimé en dixièmes de degré (pour les segments de cercle ou d'ellipse uniquement).
La propriété CircleKind détermine si un objet est un cercle complet, une tranche de cercle ou une section de cercle. Les valeurs disponibles sont les suivantes :
- com.sun.star.drawing.CircleKind.FULL
- cercle entier ou ellipse entière.
- com.sun.star.drawing.CircleKind.CUT
- section de cercle (cercle partiel dont les interfaces sont liées directement les unes aux autres).
- com.sun.star.drawing.CircleKind.SECTION
- tranche de cercle.
- com.sun.star.drawing.CircleKind.ARC
- angle (sans ligne de cercle).
L'exemple suivant crée une tranche de cercle avec un angle de 70 degrés, résultant de la différence entre l'angle de départ (20 degrés) et l'angle final (90 degrés).
Dim Doc As Object Dim Page As Object Dim EllipseShape As Object Dim Point As New com.sun.star.awt.Point Dim Size As New com.sun.star.awt.Size Point.x = 1000 Point.y = 1000 Size.Width = 10000 Size.Height = 10000 Doc = StarDesktop.CurrentComponent Page = Doc.drawPages(0) EllipseShape = Doc.createInstance("com.sun.star.drawing.EllipseShape") EllipseShape.Size = Size EllipseShape.Position = Point EllipseShape.CircleStartAngle = 2000 EllipseShape.CircleEndAngle = 9000 EllipseShape.CircleKind = com.sun.star.drawing.CircleKind.SECTION Page.add(EllipseShape)
Lignes
Apache OpenOffice fournit le service com.sun.star.drawing.LineShape pour les objets Line. Les objets Line prennent en charge tous les services de formatage généraux, à l'exception des zones. Les propriétés associées au service LineShape sont les suivantes :
- Line properties
- com.sun.star.drawing.LineProperties.
- Text properties
- com.sun.star.drawing.Text (avec com.sun.star.style.CharacterProperties et com.sun.star.style.ParagraphProperties).
- Shadow properties
- com.sun.star.drawing.ShadowProperties.
L'exemple suivant crée et formate une ligne à l'aide des propriétés nommées. L'origine de la ligne est spécifiée dans la propriété Location, tandis que les coordonnées répertoriées dans la propriété Size déterminent le point limite de la ligne.
Dim Doc As Object Dim Page As Object Dim LineShape As Object Dim Point As New com.sun.star.awt.Point Dim Size As New com.sun.star.awt.Size Point.x = 1000 Point.y = 1000 Size.Width = 10000 Size.Height = 10000 Doc = StarDesktop.CurrentComponent Page = Doc.drawPages(0) LineShape = Doc.createInstance("com.sun.star.drawing.LineShape") LineShape.Size = Size LineShape.Position = Point Page.add(LineShape)
Formes polypolygonales
Apache OpenOffice prend également en charge les formes polygonales complexes via le service com.sun.star.drawing.PolyPolygonShape. Un polygone n'est pas à proprement parler un simple polygone : il s'agit d'un polygone multiple. Il est donc possible de spécifier plusieurs listes indépendantes contenant des points d'inflexion et de les combiner pour former un objet complet.
Comme pour les formes rectangulaires, toutes les propriétés de formatage des objets de dessin sont également disponibles pour les polypolygones :
- Fill properties
- com.sun.star.drawing.FillProperties.
- Line properties
- com.sun.star.drawing.LineProperties.
- Text properties
- com.sun.star.drawing.Text (avec com.sun.star.style.CharacterProperties et com.sun.star.style.ParagraphProperties).
- Shadow properties
- com.sun.star.drawing.ShadowProperties.
Le service PolyPolygonShape fournit également une propriété permettant de définir les coordonnées d'un polygone :
- PolyPolygon (Array) : champ contenant les coordonnées du polygone (matrice double possédant des points de type com.sun.star.awt.Point).
L'exemple suivant illustre la définition d'un triangle avec le service PolyPolygonShape.
Dim Doc As Object Dim Page As Object Dim PolyPolygonShape As Object Dim PolyPolygon As Variant Dim Coordinates(2) As New com.sun.star.awt.Point Doc = StarDesktop.CurrentComponent Page = Doc.drawPages(0) PolyPolygonShape = Doc.createInstance("com.sun.star.drawing.PolyPolygonShape") Page.add(PolyPolygonShape) ' Page.add must take place before the coordinates are set Coordinates(0).x = 1000 Coordinates(1).x = 7500 Coordinates(2).x = 10000 Coordinates(0).y = 1000 Coordinates(1).y = 7500 Coordinates(2).y = 5000 PolyPolygonShape.PolyPolygon = Array(Coordinates())
Les points d'un polygone étant définis comme des valeurs absolues, il n'est pas nécessaire d'en spécifier la taille ou la position de départ. Il est conseillé de créer une matrice de points, de l'intégrer à une seconde matrice (à l'aide de l'appel Array(Coordinates()), puis d'assigner cette matrice au polygone. Pour que l'appel correspondant puisse s'effectuer, le polygone doit être inséré dans le document.
La matrice double de la définition permet de créer des formes complexes en fusionnant plusieurs polygones. Vous pouvez créer par exemple un rectangle et y insérer un autre rectangle afin de créer un trou dans le rectangle d'origine :
Dim Doc As Object Dim Page As Object Dim PolyPolygonShape As Object Dim PolyPolygon As Variant Dim Square1(3) As New com.sun.star.awt.Point Dim Square2(3) As New com.sun.star.awt.Point Dim Square3(3) As New com.sun.star.awt.Point Doc = StarDesktop.CurrentComponent Page = Doc.drawPages(0) PolyPolygonShape = Doc.createInstance("com.sun.star.drawing.PolyPolygonShape") Page.add(PolyPolygonShape) ' Page.add must take place before the coordinates are set Square1(0).x = 5000 Square1(1).x = 10000 Square1(2).x = 10000 Square1(3).x = 5000 Square1(0).y = 5000 Square1(1).y = 5000 Square1(2).y = 10000 Square1(3).y = 10000 Square2(0).x = 6500 Square2(1).x = 8500 Square2(2).x = 8500 Square2(3).x = 6500 Square2(0).y = 6500 Square2(1).y = 6500 Square2(2).y = 8500 Square2(3).y = 8500 Square3(0).x = 6500 Square3(1).x = 8500 Square3(2).x = 8500 Square3(3).x = 6500 Square3(0).y = 9000 Square3(1).y = 9000 Square3(2).y = 9500 Square3(3).y = 9500 PolyPolygonShape.PolyPolygon = Array(Square1(), Square2(), Square3())
Pour distinguer les zones remplies des zones correspondant à des trous, Apache OpenOffice applique une règle simple : l'arête de la forme extérieure correspond toujours à la bordure extérieure du polypolygone. La ligne suivante vers l'intérieur correspond à la bordure intérieure de la forme et marque la transition vers le premier trou. S'il existe une autre ligne vers l'intérieur, elle marque la transition vers une zone remplie.
Images
Les derniers éléments de dessin présentés ici sont des objets graphiques basés sur le service com.sun.star.drawing.GraphicObjectShape. Vous pouvez les utiliser avec les images de Apache OpenOffice, dont il est possible d'adapter l'apparence grâce à une vaste gamme de propriétés.
Les objets graphiques prennent en charge deux des propriétés de formatage générales :
- Text properties
- com.sun.star.drawing.Text (avec com.sun.star.style.CharacterProperties et com.sun.star.style.ParagraphProperties).
- Shadow properties
- com.sun.star.drawing.ShadowProperties.
Les autres propriétés prises en charge par les objets graphiques sont les suivantes :
- GraphicURL (String)
- URL de l'image.
- AdjustLuminance (Short)
- luminance des couleurs, exprimée en pourcentage (les valeurs négatives sont autorisées).
- AdjustContrast (Short)
- contraste exprimé en pourcentage (les valeurs négatives sont autorisées).
- AdjustRed (Short)
- valeur de la couleur rouge exprimée en pourcentage (les valeurs négatives sont autorisées).
- AdjustGreen (Short)
- valeur de la couleur verte exprimée en pourcentage (les valeurs négatives sont autorisées).
- AdjustBlue (Short)
- valeur de la couleur bleue exprimée en pourcentage (les valeurs négatives sont autorisées).
- Gamma (Short)
- valeur gamma d'une image.
- Transparency (Short)
- transparence d'une image exprimée en pourcentage.
- GraphicColorMode (enum)
- mode de couleur (standard, niveaux de gris, noir et blanc, par exemple) avec des valeurs par défaut correspondant à com.sun.star.drawing.ColorMode.
L'exemple suivant illustre l'insertion d'une page dans un objet graphique :Dim Doc As Object
Dim Page As Object Dim GraphicObjectShape As Object Dim Point As New com.sun.star.awt.Point Dim Size As New com.sun.star.awt.Size Point.x = 1000 ' specifications, insignificant because latter coordinates are binding Point.y = 1000 Size.Width = 10000 Size.Height = 10000 Doc = StarDesktop.CurrentComponent Page = Doc.drawPages(0) GraphicObjectShape = Doc.createInstance("com.sun.star.drawing.GraphicObjectShape") GraphicObjectShape.Size = Size GraphicObjectShape.Position = Point GraphicObjectShape.GraphicURL = "file:///c:/test.jpg" GraphicObjectShape.AdjustBlue = -50 GraphicObjectShape.AdjustGreen = 5 GraphicObjectShape.AdjustBlue = 10 GraphicObjectShape.AdjustContrast = 20 GraphicObjectShape.AdjustLuminance = 50 GraphicObjectShape.Transparency = 40 GraphicObjectShape.GraphicColorMode = com.sun.star.drawing.ColorMode.STANDARD Page.add(GraphicObjectShape)
Ce code insère l'image test.jpg et adapte son apparence à l'aide des propriétés Adjust. Dans cet exemple, les images sont représentées avec une transparence de 40 % et aucune autre conversion de couleur (GraphicColorMode = STANDARD).
Content on this page is licensed under the Public Documentation License (PDL). |