Contidos dentroLocalizar Mais DocumentaçãoDestaques de Recursos de Suporte | Fazer download desta apostila em PDF (1328 KB)
Chapitre 8 Dessins et présentationsCe chapitre propose une introduction à la création et à l'édition de dessins à partir de macros. La première section décrit la structure des dessins, et notamment les éléments de base contenus dans les dessins. La seconde section concerne les fonctions d'édition plus complexes, comme le groupement, la rotation et la mise à l'échelle d'objets. Vous trouverez des informations sur la création, l'ouverture et l'enregistrement de dessins dans le chapitre 5, Utilisation de documents StarOffice. Structure des dessinsStarOffice ne limite pas le nombre de pages que peut contenir un dessin. Vous pouvez concevoir chaque page séparément. Il n'y a pas de limite non plus sur le nombre d'éléments de dessin que vous pouvez ajouter à une page. La présence de couches rend la situation légèrement plus complexe. Par défaut, chaque document contient les couches Mise en page, Contrôles et Lignes de cote. Tous les éléments de dessin sont ajoutés à la couche Mise en page. Vous avez également la possibilité d'ajouter de nouvelles couches. Pour plus d'informations sur les couches de dessin, reportez-vous au StarOffice Developer's Guide (Guide du développeur). PagesLes 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 le premier exemple, 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 par 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 renvoie un objet Page prenant en charge le service com.sun.star.drawing.DrawPage. Ce service reconnaît les propriétés suivantes :
En cas de modification de ces paramètres, toutes les pages du document seront affectées. Dans l'exemple suivant, la taille de page du dessin qui vient d'être ouvert est définie 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 dessinLes 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. StarOffice Basic propose également plusieurs autres services permettant 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)
Cet exemple utilise l'appel StarDesktop.CurrentComponent pour déterminer quel document est ouvert. L'objet Document déterminé de cette manière renvoie 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. Le code du programme utilise ensuite l'appel Doc.createInstance pour créer 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 avec un appel Page.add. Propriétés de remplissageCette 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 associées dans le service com.sun.star.drawing.FillProperties. Au moment de remplir une zone, StarOffice 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 faire appel à 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 unisLa principale propriété des remplissages unis est :
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 couleursSi vous définissez la propriété FillStyle sur GRADIENT, vous pourrez appliquer un dégradé de couleurs à toutes les zones à remplir dans un document StarOffice. 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 afin d'assigner la propriété FillGradient. Cette propriété propose les options suivantes :
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 de début et de fin est de 150 % (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). HachuresPour 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 :
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). BitmapsPour utiliser une projection bitmap comme remplissage, vous devez définir la propriété FillStyle sur BITMAP. Si le bitmap est déjà disponible dans StarOffice, il vous suffit de spécifier son nom dans la propriété FillBitMapName et son style d'affichage (simple, carrelage 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 StarOffice en carrelage, 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)
TransparenceVous 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. En plus de la propriété FillTransparence, le service com.sun.star.drawing.FillProperties propose également la propriété FillTransparenceGradient. Elle sert à définir un dégradé pour la transparence d'une zone à remplir. Propriétés de ligneTous les objets de dessin susceptibles d'avoir une ligne de bordure prennent en charge le service com.sun.star.drawing.LineStyle. Ce service propose notamment les propriétés suivantes :
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)
En plus des propriétés indiquées précédemment, le service com.sun.star.drawing.LineStyle propose des options permettant de dessiner des lignes pointillées. Pour plus d'informations, consultez la référence de l'API StarOffice. 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, et sont traités en détail dans le chapitre 6, Documents texte. L'exemple suivant permet d'insérer du texte dans un rectangle et d'en formater la police grâce au 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, et 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'après que l'objet de dessin a été ajouté à la page de dessin. Vous pouvez également utiliser le service com.sun.star.drawing.Text pour positionner et formater du texte dans un objet de dessin. Voici quelques propriétés importantes de ce service :
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" ' Ne peut se trouver
' qu'après 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 grâce aux 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'ombreVous pouvez ajouter une ombre à la plupart des objets de dessin en utilisant le service com.sun.star.drawing.ShadowProperties. Ce service propose les propriétés suivantes :
L'exemple suivant crée un rectangle avec une ombre présentant un décalage vertical et un décalage horizontal de 2 millimètres. 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 dessinFormes rectangulairesLes objets de forme rectangulaire (com.sun.star.drawing.RectangleShape) prennent en charge les services suivants pour leur formatage :
Cercles et ellipsesLe service com.sun.star.drawing.EllipseShape gère les cercles et les ellipses, et prend en charge les services suivants :
Outre ces services, les cercles et les ellipses offrent les propriétés suivantes :
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 :
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)
LignesStarOffice propose le service com.sun.star.drawing.LineShape pour les objets Ligne. Les objets Ligne prennent en charge tous les services de formatage généraux, à l'exception des zones. Vous trouverez ci-après toutes les propriétés associées au service LineShape :
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 polypolygonalesStarOffice prend également en charge les formes polygonales complexes via le service com.sun.star.drawing.PolyPolygonShape. Un polypolygone 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 :
Le service PolyPolygonShape propose également une propriété permettant de définir les coordonnées d'un polygone :
L'exemple suivant montre comment définir 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 doit être spécifié avant les coordonnées
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. Nous vous conseillons 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 doit être spécifié avant les coordonnées
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 à trous, StarOffice 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. ImagesLes derniers éléments de dessin présentés ici sont des objets graphiques basés sur le service com.sun.star.drawing.GraphicObjectShape. Ils peuvent être utilisés avec les images de StarOffice, dont l'apparence peut être adaptée 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 :
Les autres propriétés prises en charge par les objets graphiques sont les suivantes :
L'exemple suivant montre comment insérer une page dans une image object.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 ' spécifications, non primordiales car les dernières
' coordonnées
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 permet d'insérer l'image test.jpg et d'adapter son apparence à l'aide des propriétés Adjust. Dans cet exemple, les images sont représentées avec 40 % de transparence et aucune autre conversion de couleur (GraphicColorMode = STANDARD). Édition des objets de dessinGroupement d'objetsIl est souvent utile de regrouper plusieurs objets de dessin individuels afin qu'ils se comportent comme un seul objet. L'exemple suivant associe deux objets de dessin : Dim Doc As Object
Dim Page As Object
Dim Square As Object
Dim Circle As Object
Dim Shapes As Object
Dim Group As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
Dim NewPos As New com.sun.star.awt.Point
Dim Height As Long
Dim Width As Long
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
Point.x = 3000
Point.y = 3000
Size.Width = 3000
Size.Height = 3000
' create square drawing element
Square = Doc.createInstance("com.sun.star.drawing.RectangleShape")
Square.Size = Size
Square.Position = Point
Square.FillColor = RGB(255,128,128)
Page.add(Square)
' create circle drawing element
Circle = Doc.createInstance("com.sun.star.drawing.EllipseShape")
Circle.Size = Size
Circle.Position = Point
Circle.FillColor = RGB(255,128,128)
Circle.FillColor = RGB(0,255,0)
Page.add(Circle)
' combine square and circle drawing elements
Shapes = createUnoService("com.sun.star.drawing.ShapeCollection")
Shapes.add(Square)
Shapes.add(Circle)
Group = Page.group(Shapes)
' centre combined drawing elements
Height = Page.Height
Width = Page.Width
NewPos.X = Width / 2
NewPos.Y = Height / 2
Height = Group.Size.Height
Width = Group.Size.Width
NewPos.X = NewPos.X - Width / 2
NewPos.Y = NewPos.Y - Height / 2
Group.Position = NewPos
Ce code crée un rectangle et un cercle, puis les insère dans une page. Un objet prenant en charge le service com.sun.star.drawing.ShapeCollection est ensuite créé et la méthode Add est utilisée pour ajouter le rectangle et le cercle à cet objet. Le service ShapeCollection est ajouté à la page à l'aide de la méthode Group et renvoie l'objet Group réel qui peut être édité individuellement comme une forme Shape. Si vous souhaitez formater les différents objets d'un groupe, appliquez le formatage avant de les ajouter au groupe. Une fois qu'ils ont été insérés dans un groupe, les objets ne peuvent pas être modifiés. Rotation et cisaillement des objets de dessinTous les objets de dessin décrits dans les sections précédentes peuvent également faire l'objet de rotations et de cisaillements à l'aide du service com.sun.star.drawing.RotationDescriptor. Ce service offre les propriétés suivantes :
L'exemple suivant crée un rectangle et le fait pivoter de 30 degrés à l'aide de la propriété RotateAngle : 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.RotateAngle = 3000
Page.add(RectangleShape)
L'exemple suivant crée le même rectangle que dans le précédent, mais en appliquant un cisaillement de 30 degrés à l'aide de la propriété ShearAngle. 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.ShearAngle = 3000
Page.add(RectangleShape)
Recherche et remplacementTout comme les documents texte, les documents de dessin comportent une fonction de recherche et de remplacement. Cette fonction est semblable à celle utilisée dans les documents texte et est décrite dans le chapitre 6, Documents texte. Dans les dessins, toutefois, les objets Descriptor pour la recherche et le remplacement ne sont pas créés directement au moyen de l'objet Document, mais par l'intermédiaire du niveau de caractère associé. L'exemple suivant illustre le processus de remplacement dans un dessin : Dim Doc As Object Dim Page As Object Dim ReplaceDescriptor As Object Dim I As Integer Doc = StarDesktop.CurrentComponent Page = Doc.drawPages(0) ReplaceDescriptor = Page.createReplaceDescriptor() ReplaceDescriptor.SearchString = "is" ReplaceDescriptor.ReplaceString = "was" For I = 0 to Doc.drawPages.Count - 1 Page = Doc.drawPages(I) Page.ReplaceAll(ReplaceDescriptor) Next I Ce code utilise le premier DrawPage du document pour créer un ReplaceDescriptor avant d'appliquer ce descripteur dans une boucle à toutes les pages du dessin. PrésentationsLes présentations StarOffice sont basées sur des dessins. Chaque page de la présentation est une diapo. L'accès aux diapos s'effectue de la même manière que l'accès à un dessin standard, via la liste DrawPages de l'objet Document. Le service com.sun.star.presentation.PresentationDocument gère les présentations et fournit une version complète du service com.sun.star.drawing.DrawingDocument. Utilisation des présentationsOutre les fonctions de dessin offertes par la propriété Presentation, les présentations contiennent un objet Presentation qui permet d'accéder aux propriétés principales et aux mécanismes de contrôle des présentations. Cet objet propose par exemple une méthode start permettant de lancer les présentations. Dim Doc As Object Dim Presentation As Object Doc = StarDesktop.CurrentComponent Presentation = Doc.Presentation Presentation.start() Le code utilisé dans cet exemple crée un objet Doc faisant référence à la présentation active et un objet Presentation correspondant. La méthode start() de l'objet permet de lancer l'exemple et d'exécuter la présentation à l'écran. Les méthodes suivantes sont fournies comme objets Presentation : Les propriétés suivantes sont également disponibles :
|