Difference between revisions of "NL/Documentation/BASIC Guide/Structure of Drawings"
Line 491: | Line 491: | ||
Doc = ThisComponent | Doc = ThisComponent | ||
− | + | Pagina = Doc.DrawPages(0) | |
RechthoekVorm = Doc.createInstance("com.sun.star.drawing.RectangleShape") | RechthoekVorm = Doc.createInstance("com.sun.star.drawing.RectangleShape") |
Revision as of 11:23, 4 March 2013
Pagina's
Apache OpenOffice kent geen beperking in het aantal pagina's in een document voor een tekening. U kunt elke pagina afzonderlijk ontwerpen. Er is ook geen limiet aan het aantal tekenelementen dat u kunt toevoegen aan een pagina.
De pagina's van een document voor een tekening zijn beschikbaar via de DrawPages container DrawPages. U kunt individuele pagina's echter benaderen via hun nummer of hun naam. Als een document slechts één pagina heeft en die is genaamd Dia 1, dan zijn de volgende voorbeelden identiek.
Voorbeeld 1: toegang door middel van het nummer (nummering begint met 0)
Dim Doc As Object
Dim Pagina As Object
Doc = ThisComponent
Pagina = Doc.DrawPages(0)
Voorbeeld 2: toegang door middel van de naam
Dim Doc As Object
Dim Pagina As Object
Doc = ThisComponent
Pagina = Doc.DrawPages.getByName("Dia 1")
In voorbeeld 1 wordt de pagina benaderd via zijn nummer (nummering begint bij 0). In het tweede voorbeeld wordt de pagina benaderd via zijn naam en de methode getByName.
Eigenschappen van een pagina
De voorgaande aanroep geeft een object Pagina terug dat de service com.sun.star.drawing.DrawPage ondersteunt. De service herkent de volgende eigenschappen:
- BorderLeft (Long)
- linker rand in 100-en van een millimeter
- BorderRight (Long)
- rechter rand in 100-en van een millimeter
- BorderTop (Long)
- bovenste rand in 100-en van een millimeter
- BorderBottom (Long)
- onderste rand in 100-en van een millimeter
- Width (Long)
- paginabreedte in 100-en van een millimeter
- Height (Long)
- paginahoogte in 100-en van een millimeter
- Number (Short)
- aantal pagina's (nummering begint met 1), alleen-lezen
- Orientation (Enum)
- oriëntatie van de pagina (overeenkomend met de opsomming com.sun.star.view.PaperOrientation)
Als deze instellingen worden veranderd dan beïnvloedt dat alle pagina's in het document. Het volgende voorbeeld stelt de paginagrootte van een net geopend document voor een tekening in op 20 × 20 centimeter met een paginamarge van 0,5 centimeter:
Dim Doc As Object
Dim Pagina As Object
Doc = ThisComponent
Pagina = Doc.DrawPages(0)
Pagina.BorderLeft = 500
Pagina.BorderRight = 500
Pagina.BorderTop = 500
Pagina.BorderBottom = 500
Pagina.Width = 20000
Pagina.Height = 20000
Hernoemen van pagina's
Een pagina verschaft de methoden getName
en setName
om zijn naam te lezen en aan te passen. BASIC kan beide methoden afhandelen als een eigenschap Name
. Hier hernoemen we de eerste pagina van het document voor de tekening.
Dim Doc As Object
Dim Pagina As Object
Doc = ThisComponent
Pagina = Doc.DrawPages(0)
Pagina.Name = "Eerste"
Maken en verwijderen van pagina's
De container DrawPages van een document voor een tekening wordt ook gebruikt om individuele pagina's te maken en te verwijderen. Het volgende voorbeeld gebruikt de methode hasByName om te controleren of een pagina, genaamd MijnPagina, bestaat. Als die bestaat bepaalt de methode een overeenkomstige verwijzing naar het object met behulp van de methode getByName en slaat dan de verwijzing op in een variabele in Pagina. Als de overeenkomende pagina niet bestaat, wordt die gemaakt en ingevoegd in het document voor de tekening door middel van de methode insertNewByIndex. Het argument van de methode is de positie, geteld vanaf 0, van de bestaande pagina achter welke de nieuwe pagina zal worden ingevoegd. Dan wordt de nieuwe pagina hernoemd.
Dim Doc As Object
Dim Pagina As Object
Doc = ThisComponent
If Doc.Drawpages.hasByName("MijnPagina") Then
Pagina = Doc.Drawpages.getByName("MijnPagina")
Else
Pagina = Doc.Drawpages.insertNewByIndex(2)
Pagina.Name = "MijnPagina" ' u zou een nieuwe pagina altijd moeten hernoemen
' MijnPagina is de vierde pagina van het document, d.i. positie 3
End If
De methoden hasByName en getByName worden verkregen uit de interface com.sun.star.container.XNameAccess.
De methode insertNewByIndex wordt verkregen uit de interface com.sun.star.drawing.XDrawPages.
Dezelfde interface verschaft de methode remove
om een pagina te verwijderen (wissen):
Dim Doc As Object
Dim Pagina As Object
Doc = ThisComponent
If Doc.Drawpages.hasByName("MijnPagina") Then
Pagina = Doc.Drawpages.getByName("MijnPagina")
Doc.Drawpages.remove(Pagina)
End If
Dupliceren van een pagina
Een kopie van een bepaalde pagina wordt gemaakt, niet vanuit de container DrawPages, maar vanuit het document voor de tekening zelf met de methode duplicate
. De kopie wordt gemaakt op de volgende positie nà de originele pagina, met een standaard naam.
Dim Doc As Object
Dim Pagina As Object, KopiePagina As Object
Doc = ThisComponent
Pagina = Doc.Drawpages.getByName("MijnPagina")
KopiePagina = Doc.duplicate(Pagina)
KopiePagina.Name = "MijnKopie" ' u zou een nieuwe pagina altijd moeten hernoemen
Verplaatsen van een pagina
De API verschaft geen methode om de positie van een pagina binnen het document voor een tekening te wijzigen.
Elementaire eigenschappen van tekenobjecten
Tekenobjecten bestaan uit vormen (rechthoeken, cirkels, enzovoort), lijnen en tekstobjecten. Deze delen allemaal een aantal algemene mogelijkheden en ondersteunen de service com.sun.star.drawing.Shape. Deze service definieert de eigenschappen Size en Position van een tekenobject.
Apache OpenOffice BASIC biedt ook diverse andere services waardoor u dergelijke eigenschappen kunt wijzigen, zoals opmaak of vulling toepassen. De opties voor de opmaak die beschikbaar zijn hangen af van het type tekenobject.
Het volgende voorbeeld maakt een rechthoek en voegt die in een document voor een tekening in:
Dim Doc As Object
Dim Pagina As Object
Dim RechthoekVorm As Object
Dim Punt As New com.sun.star.awt.Point
Dim Grootte As New com.sun.star.awt.Size
Doc = ThisComponent
Pagina = Doc.DrawPages(0)
Punt.x = 1000
Punt.y = 1000
Grootte.Width = 10000
Grootte.Height = 10000
RechthoekVorm = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RechthoekVorm.Size = Grootte
RechthoekVorm.Position = Punt
Pagina.add(RechthoekVorm)
De structuren Punt en Grootte, met het punt van origine (linkerbovenhoek) en de grootte van het tekenobject, worden geïnitialiseerd. De lengten worden gespecificeerd in honderdsten van een millimeter.
De programmacode gebruikt dan de aanroep Doc.createInstance om een rechthoekig tekenobject te maken, zoals gespecificeerd door de service com.sun.star.drawing.RectangleShape. Aan het einde wordt het tekenobject toegewezen aan de pagina met behulp van een aanroep Pagina.add.
Eigenschappen voor vulling
Dit gedeelte beschrijft vier services en in elk geval gebruikt de programmacode van het voorbeeld een element met een rechthoekige vorm die verschillende vormen van opmaak combineert. Eigenschappen voor vulling worden gecombineerd in de service com.sun.star.drawing.FillProperties.
Apache OpenOffice herkent vier hoofdtypen van opmaak voor een gebied dat gevuld moet worden. De eenvoudigste variant is een enkelkleurige vulling. De opties voor het definiëren van kleurverlopen en arceringen stellen u in staat ook andere kleuren te gebruiken. De vierde variant is de optie van het projecteren van bestaande afbeeldingen in het gebied om te vullen.
De modus vulling van een tekenobject wordt gedefinieerd met behulp van de eigenschap FillStyle. De toegestane waarden worden gedefinieerd in com.sun.star.drawing.FillStyle.
Vullingen met één kleur
De belangrijkste eigenschap voor enkelkleurige vullingen is:
- FillColor (Long)
- kleur voor de vulling van het gebied
U moet de eigenschap FillStyle instellen op de modus voor vulling SOLID om die modus voor vulling te kunnen gebruiken.
Het volgende voorbeeld maakt een rechthoekige vorm en vult die met rood (RGB waarde 255, 0, 0):
Dim Doc As Object
Dim Pagina As Object
Dim RechthoekVorm As Object
Dim Punt As New com.sun.star.awt.Point
Dim Grootte As New com.sun.star.awt.Size
Punt.x = 1000
Punt.y = 1000
Grootte.Width = 10000
Grootte.Height = 10000
Doc = ThisComponent
Pagina = Doc.DrawPages(0)
RechthoekVorm = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RechthoekVorm.Size = Grootte
RechthoekVorm.Position = Punt
RechthoekVorm.FillStyle = com.sun.star.drawing.FillStyle.SOLID
RechthoekVorm.FillColor = RGB(255,0,0)
Pagina.add(RechthoekVorm)
Kleurverloop
Als u de eigenschap FillStyle instelt op GRADIENT, kunt u een kleurverloop toepassen op elk vulgebied in een document van Apache OpenOffice.
Indien u een vooraf gedefinieerd kleurverloop wilt toepassen, kunt u de bijbehorende naam toewijzen aan de eigenschap FillTransparenceGradientName. Om uw eigen kleurverloop te definiëren, moet u een structuur com.sun.star.awt.Gradient completeren om de eigenschap FillGradient aan toe te wijzen. Deze eigenschap verschaft de volgende opties:
- Style (Enum)
- type kleurverloop, bijvoorbeeld, lineair of radiaal (standaard waarden overeenkomend met com.sun.star.awt.GradientStyle)
- StartColor (Long)
- beginkleur van kleurverloop
- EndColor (Long)
- eindkleur van kleurverloop
- Angle (Short)
- hoek van het kleurverloop in tienden van graden
- XOffset (Short)
- X-coördinaat waarop het kleurverloop begint, gespecificeerd in 100-en of a millimeter
- YOffset (Short)
- Y-coördinaat waarop het kleurverloop begint, gespecificeerd in 100-en of a millimeter
- StartIntensity (Short)
- intensiteit van StartColor als een percentage (in Apache OpenOffice BASIC kunt u ook waarden specificeren die groter zijn dan 100 procent)
- EndIntensity (Short)
- intensiteit van EndColor als een percentage (in Apache OpenOffice BASIC kunt u ook waarden specificeren die groter zijn dan 100 procent)
- StepCount (Short)
- aantal gradaties van kleuren dat Apache OpenOffice moet berekenen voor de verlopen
Het volgende voorbeeld demonstreert het gebruik van kleurverlopen met behulp van de structuur com.sun.star.awt.Gradient:
Dim Doc As Object
Dim Pagina As Object
Dim RechthoekVorm As Object
Dim Punt As New com.sun.star.awt.Point
Dim Grootte As New com.sun.star.awt.Size
Dim Kleurverloop As New com.sun.star.awt.Gradient
Punt.x = 1000
Punt.y = 1000
Grootte.Width = 10000
Grootte.Height = 10000
Doc = ThisComponent
Pagina = Doc.DrawPages(0)
RechthoekVorm = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RechthoekVorm.Size = Grootte
RechthoekVorm.Position = Punt
Kleurverloop.Style = com.sun.star.awt.GradientStyle.LINEAR
Kleurverloop.StartColor = RGB(255,0,0)
Kleurverloop.EndColor = RGB(0,255,0)
Kleurverloop.StartIntensity = 150
Kleurverloop.EndIntensity = 150
Kleurverloop.Angle = 450
Kleurverloop.StepCount = 100
RechthoekVorm.FillStyle = com.sun.star.drawing.FillStyle.GRADIENT
RechthoekVorm.FillGradient = Kleurverloop
Pagina.add(RechthoekVorm)
Dit voorbeeld maakt een lineair kleurverloop (Style = LINEAR). Het kleurverloop begint met rood (StartColor) in de linkerbovenhoek en breidt zich uit in een hoek van 45 graden (Angle) tot groen (EndColor) in de rechter benedenhoek. De kleurintensiteit van de begin- en eindkleur is 150 procent (StartIntensity en EndIntensity) welke er in resulteren dat de kleuren helderder lijken dan de waarden, gespecificeerd in de eigenschappen StartColor en EndColor. Het kleurverloop wordt weergegeven door middel van honderd gegradueerde individuele kleuren (StepCount).
Arceringen
De eigenschap FillStyle moet worden ingesteld op HATCH om een vulling met arcering te maken. De programmacode voor het definiëren van de arcering lijkt veel op de code voor kleurverlopen. Opnieuw wordt een hulp-structuur, in dit geval com.sun.star.drawing.Hatch, gebruikt om het uiterlijk van de arcering te definiëren. De structuur voor arceringen heeft de volgende eigenschappen:
- Style (Enum)
- type arcering: eenvoudig, vierkant of vierkant met diagonalen (standaard waarden die overeenkomen met com.sun.star.awt.HatchStyle)
- Color (Long)
- kleur van de lijnen
- Distance (Long)
- afstand tussen de lijnen in 100-en van een millimeter
- Angle (Short)
- hoek van de arcering in tienden van graden
Het volgende voorbeeld demonstreert het gebruik van een structuur voor arcering:
Dim Doc As Object
Dim Pagina As Object
Dim RechthoekVorm As Object
Dim Punt As New com.sun.star.awt.Point
Dim Grootte As New com.sun.star.awt.Size
Dim Arcering As New com.sun.star.drawing.Hatch
Punt.x = 1000
Punt.y = 1000
Grootte.Width = 10000
Grootte.Height = 10000
Doc = ThisComponent
Pagina = Doc.DrawPages(0)
RechthoekVorm = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RechthoekVorm.Size = Grootte
RechthoekVorm.Position = Punt
RechthoekVorm.FillStyle = com.sun.star.drawing.FillStyle.HATCH
Arcering.Style = com.sun.star.drawing.HatchStyle.SINGLE
Arcering.Color = RGB(64,64,64)
Arcering.Distance = 20
Arcering.Angle = 450
RechthoekVorm.FillHatch = Hatch
Pagina.add(RechthoekVorm)
Deze code maakt een eenvoudige structuur voor arcering (HatchStyle = SINGLE) waarvan de lijnen gedraaid zijn onder een hoek van 45 graden (Angle). De lijnen zijn donkergrijs (Color) en liggen 0,2 millimeter (Distance) uit elkaar.
Afbeeldingen
U moet de eigenschap FillStyle instellen op BITMAP om een projectie van een afbeelding te gebruiken als vulling. Als de afbeelding al beschikbaar is in Apache OpenOffice, hoeft u alleen de naam te specificeren in de eigenschap FillBitMapName en zijn manier van zijn weergave (eenvoudig, getegeld of vergroot) in de eigenschap FillBitmapMode (standaardwaarden overeenkomend met com.sun.star.drawing.BitmapMode).
Als u een extern afbeeldingsbestand wilt gebruiken, kunt u de URL daarvan specificeren in de eigenschap FillBitmapURL.
Het volgende voorbeeld maakt een rechthoek en tegelt de afbeelding Sky, die beschikbaar is in Apache OpenOffice, om het gebied van de rechthoek te vullen:
Dim Doc As Object
Dim Pagina As Object
Dim RechthoekVorm As Object
Dim Punt As New com.sun.star.awt.Point
Dim Grootte As New com.sun.star.awt.Size
Punt.x = 1000
Punt.y = 1000
Grootte.Width = 10000
Grootte.Height = 10000
Doc = ThisComponent
Page = Doc.DrawPages(0)
RechthoekVorm = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RechthoekVorm.Size = Grootte
RechthoekVorm.Position = Punt
RechthoekVorm.FillStyle = com.sun.star.drawing.FillStyle.BITMAP
RechthoekVorm.FillBitmapName = "Sky"
RechthoekVorm.FillBitmapMode = com.sun.star.drawing.BitmapMode.REPEAT
Pagina.add(RechthoekVorm)
Transparantie
U kunt de transparantie aanpassen van elke vulling die u toepast. De eenvoudigste manier om de transparantie van een teken-element te veranderen is door de eigenschap FillTransparence te gebruiken.
Het volgende voorbeeld maakt een rode rechthoek met een transparantie van 50 procent.
Dim Doc As Object
Dim Pagina As Object
Dim RechthoekVorm As Object
Dim Punt As New com.sun.star.awt.Point
Dim Grootte As New com.sun.star.awt.Size
Punt.x = 1000
Punt.y = 1000
Grootte.Width = 10000
Grootte.Height = 10000
Doc = ThisComponent
Pagina = Doc.DrawPages(0)
RechthoekVorm = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RechthoekVorm.Size = Grootte
RechthoekVorm.Position = Punt
RechthoekVorm.FillStyle = com.sun.star.drawing.FillStyle.SOLID
RechthoekVorm.FillTransparence = 50
RechthoekVorm.FillColor = RGB(255,0,0)
Pagina.add(RechthoekVorm)
Stel de eigenschap FillTransparence in op 100 om de vulling transparant te maken.
In aanvulling op de eigenschap FillTransparence, verschaft de service com.sun.star.drawing.FillProperties ook de eigenschap FillTransparenceGradient. Deze wordt gebruikt om een kleurverloop te definiëren dat de transparantie van een gebied voor de vulling specificeert.
Lijneigenschappen
Alle tekenobjecten die een randlijn kunnen hebben ondersteunen de service com.sun.star.drawing.LineStyle. Enkele van de eigenschappen die deze service verschaft zijn:
- LineStyle (Enum)
- type lijn (standaardwaarden overeenkomend met com.sun.star.drawing.LineStyle)
- LineColor (Long)
- kleur van de lijn
- LineTransparence (Short)
- transparantie van de lijn
- LineWidth (Long)
- dikte van de lijn in 100-en van een millimeter
- LineJoint (Enum)
- transities naar verbindingspunten (standaard waarden overeenkomend met com.sun.star.drawing.LineJoint )
Het volgende voorbeeld maakt een rechthoek met een doorlopende randlijn (LineStyle = SOLID) die 5 millimeter dik is (LineWidth) en 50 procent transparant. De rechter en linker-uiteinden van de lijn breiden zich uit tot het ontmoetingspunt met elkaar (LineJoint = MITER) om een rechte hoek te vormen.
Dim Doc As Object
Dim Pagina As Object
Dim RechthoekVorm As Object
Dim Punt As New com.sun.star.awt.Point
Dim Grootte As New com.sun.star.awt.Size
Punt.x = 1000
Punt.y = 1000
Grootte.Width = 10000
Grootte.Height = 10000
Doc = ThisComponent
Pagina = Doc.DrawPages(0)
RechthoekVorm = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RechthoekVorm.Size = Grootte
RechthoekVorm.Position = Punt
RechthoekVorm.LineColor = RGB(128,128,128)
RechthoekVorm.LineTransparence = 50
RechthoekVorm.LineWidth = 500
RechthoekVorm.LineJoint = com.sun.star.drawing.LineJoint.MITER
RechthoekVorm.LineStyle = com.sun.star.drawing.LineStyle.SOLID
Pagina.add(RechthoekVorm)
In aanvulling op de vermelde eigenschappen, verschaft de service com.sun.star.drawing.LineStyle opties voor het tekenen van lijnen met punten en streepjes. Voor meer informatie, zie de verwijzing naar de API van Apache OpenOffice.
Eigenschappen voor tekst (tekenobjecten)
De services com.sun.star.style.CharacterProperties en com.sun.star.style.ParagraphProperties kunnen tekst opmaken in tekenobjecten. Deze services relateren aan de individuele tekens en alinea's en worden in detail beschreven in Tekstdocumenten.
Het volgende voorbeeld voegt een tekst in in een rechthoek en maakt de service voor het lettertype com.sun.star.style.CharacterProperties op.
Dim Doc As Object
Dim Pagina As Object
Dim RechthoekVorm As Object
Dim Punt As New com.sun.star.awt.Point
Dim Grootte As New com.sun.star.awt.Size
Punt.x = 1000
Punt.y = 1000
Grootte.Width = 10000
Grootte.Height = 10000
Doc = ThisComponent
Pagina = Doc.DrawPages(0)
RechthoekVorm = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RechthoekVorm.Size = Grootte
RechthoekVorm.Position = Punt
Pagina.add(RechthoekVorm)
RechthoekVorm.String = "Dit is een test"
RechthoekVorm.CharWeight = com.sun.star.awt.FontWeight.BOLD
RechthoekVorm.CharFontName = "Arial"
Deze code gebruikt de eigenschap String van de rechthoek om de tekst in te voegen en de eigenschappen CharWeight en CharFontName uit de service com.sun.star.style.CharacterProperties om het lettertype van de tekst op te maken.
De tekst kan alleen worden ingevoegd nadat het tekenobject is toegevoegd aan de tekenpagina. U kunt ook de service com.sun.star.drawing.Text gebruiken om de tekst te positioneren en op te maken in het tekenobject. Hier volgen enkele van de belangrijkste eigenschappen van deze service:
- TextAutoGrowHeight (Boolean)
- past de hoogte van het tekenelement aan aan de tekst die het bevat
- TextAutoGrowWidth (Boolean)
- past de breedte van het tekenelement aan aan de tekst die het bevat
- TextHorizontalAdjust (Enum)
- horizontale positie van de tekst binnen het tekenelement (standaard waarden overeenkomend met com.sun.star.drawing.TextHorizontalAdjust)
- TextVerticalAdjust (Enum)
- verticale positie van de tekst binnen het tekenelement (standaard waarden overeenkomend met com.sun.star.drawing.TextVerticalAdjust)
- TextLeftDistance (Long)
- afstand links tussen het tekenelement en de tekst in 100-en van een millimeter
- TextRightDistance (Long)
- afstand rechts tussen het tekenelement en de tekst in 100-en van een millimeter
- TextUpperDistance (Long)
- afstand boven tussen het tekenelement en de tekst in 100-en van een millimeter
- TextLowerDistance (Long)
- afstand onder tussen het tekenelement en de tekst in 100-en van een millimeter
Het volgende voorbeeld demonstreert het gebruik van de genoemde eigenschappen.
Dim Doc As Object
Dim Pagina As Object
Dim RechthoekVorm As Object
Dim Punt As New com.sun.star.awt.Point
Dim Grootte As New com.sun.star.awt.Size
Punt.x = 1000
Punt.y = 1000
Grootte.Width = 10000
Grootte.Height = 10000
Doc = ThisComponent
Pagina = Doc.DrawPages(0)
RechthoekVorm = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RechthoekVorm.Size = Grootte
RechthoekVorm.Position = Punt
Pagina.add(RechthoekVorm)
RechthoekVorm.String = "Dit is een test" ' Kan alleen plaatsvinden na Pagina.add!
RechthoekVorm.TextVerticalAdjust = com.sun.star.drawing.TextVerticalAdjust.TOP
RechthoekVorm.TextHorizontalAdjust = com.sun.star.drawing.TextHorizontalAdjust.LEFT
RechthoekVorm.TextLeftDistance = 300
RechthoekVorm.TextRightDistance = 300
RechthoekVorm.TextUpperDistance = 300
RechthoekVorm.TextLowerDistance = 300
Deze code voegt een tekenelement in op een pagina en voegt dan tekst toe aan de linkerbovenhoek van het tekenobject met behulp van de eigenschappen TextVerticalAdjust en TextHorizontalAdjust. De minimum afstand tussen de tekst en de rand van het teken-object is ingesteld op drie millimeters
Eigenschappen voor schaduw
U kunt een schaduw toevoegen aan de meeste teken-objecten met de service com.sun.star.drawing.ShadowProperties. De eigenschappen van deze service zijn:
- Shadow (Boolean)
- activeert de schaduw
- ShadowColor (Long)
- kleur van de schaduw
- ShadowTransparence (Short)
- transparantie van de schaduw
- ShadowXDistance (Long)
- verticale afstand van de schaduw tot het tekenobject in 100-en van een millimeter
- ShadowYDistance (Long)
- horizontale afstand van de schaduw tot het tekenobject in 100-en van een millimeter
Het volgende voorbeeld maakt een rechthoek met een schaduw die verticaal en horizontaal buiten de rechthoek steekt tot 2 millimeters. De schaduw wordt uitgevoerd in donkergrijs met 50 procent transparantie.
Dim Doc As Object
Dim Pagina As Object
Dim RechthoekVorm As Object
Dim Punt As New com.sun.star.awt.Point
Dim Grootte As New com.sun.star.awt.Size
Punt.x = 1000
Punt.y = 1000
Grootte.Width = 10000
Grootte.Height = 10000
Doc = ThisComponent
Pagina = Doc.DrawPages(0)
RechthoekVorm = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RechthoekVorm.Size = Grootte
RechthoekVorm.Position = Punt
RechthoekVorm.Shadow = True
RechthoekVorm.ShadowColor = RGB(192,192,192)
RechthoekVorm.ShadowTransparence = 50
RechthoekVorm.ShadowXDistance = 200
RechthoekVorm.ShadowYDistance = 200
Pagina.add(RechthoekVorm)
Een overzicht van de verschillende tekenobjecten
Rechthoekige vormen
Objecten met een rechthoekige vorm (com.sun.star.drawing.RectangleShape) ondersteunen de volgende services voor het opmaken van objecten:
- Eigenschappen voor vulling
- com.sun.star.drawing.FillProperties
- Eigenschappen voor lijnen
- com.sun.star.drawing.LineProperties
- Eigenschappen voor tekst
- com.sun.star.drawing.Text (met com.sun.star.style.CharacterProperties en com.sun.star.style.ParagraphProperties)
- Eigenschappen voor schaduw
- com.sun.star.drawing.ShadowProperties
- CornerRadius (Long)
- radius voor het afronden van hoeken in 100-en van een millimeter
Cirkels en ellipsem
De service com.sun.star.drawing.EllipseShape is verantwoordelijk voor cirkels en ellipsen en ondersteunt de volgende services:
- Eigenschappen voor vulling
- com.sun.star.drawing.FillProperties
- Eigenschappen voor lijnen
- com.sun.star.drawing.LineProperties
- Eigenschappen voor tekst
- com.sun.star.drawing.Text (met com.sun.star.style.CharacterProperties en com.sun.star.style.ParagraphProperties)
- Eigenschappen voor schaduw
- com.sun.star.drawing.ShadowProperties
In aanvulling op deze services, verschaffen cirkels en ellipsen ook deze eigenschappen:
- CircleKind (Enum)
- type cirkel of ellips (standaard waarden die overeenkomen met com.sun.star.drawing.CircleKind )
- CircleStartAngle (Long)
- beginhoek in tienden van graden (alleen voor segmenten van cirkel of ellips)
- CircleEndAngle (Long)
- eindhoek in tienden van graden (alleen voor segmenten van cirkel of ellips)
De eigenschap CircleKind bepaalt of een object een complete cirkel is, een cirkelsegment of een sector van een cirkel. De volgende waarden zijn beschikbaar:
- com.sun.star.drawing.CircleKind.FULL
- volledige cirkel of volledige ellips
- com.sun.star.drawing.CircleKind.CUT
- cirkelsegment (gedeeltelijk cirkel waarvan de interfaces direct aan elkaar gekoppeld zijn)
- com.sun.star.drawing.CircleKind.SECTION
- cirkelsegment
- com.sun.star.drawing.CircleKind.ARC
- hoek (niet inclusief de rand van de cirkel)
Het volgende voorbeeld maakt een cirkelsegment met een 70 graden hoek (geproduceerd uit het verschil van de starthoek van 20 graden en de eindhoek van 90 graden):
Dim Doc As Object
Dim Pagina As Object
Dim EllipsVorm As Object
Dim Punt As New com.sun.star.awt.Point
Dim Grootte As New com.sun.star.awt.Size
Punt.x = 1000
Punt.y = 1000
Grootte.Width = 10000
Grootte.Height = 10000
Doc = ThisComponent
Pagina = Doc.DrawPages(0)
EllipsVorm = Doc.createInstance("com.sun.star.drawing.EllipseShape")
EllipsVorm.Size = Grootte
EllipsVorm.Position = Punt
EllipsVorm.CircleStartAngle = 2000
EllipsVorm.CircleEndAngle = 9000
EllipsVorm.CircleKind = com.sun.star.drawing.CircleKind.SECTION
Pagina.add(EllipsVorm)
Lijnen
Apache OpenOffice verschaft de service com.sun.star.drawing.LineShape voor lijn-objecten. Lijn-objecten ondersteunen alle algemene opmaak-services met uitzondering van die van gebieden. Hieronder volgen alle eigenschappen die zijn verbonden met de service LineShape:
- Eigenschappen voor lijnen
- com.sun.star.drawing.LineProperties
- Eigenschappen voor tekst
- com.sun.star.drawing.Text (met com.sun.star.style.CharacterProperties en com.sun.star.style.ParagraphProperties)
- Eigenschappen voor schaduw
- com.sun.star.drawing.ShadowProperties
Het volgende voorbeeld maakt een lijn en maakt die op met de hulp van de genoemde eigenschappen. De oorsprong van de lijn wordt gespecificeerd in de eigenschap Location, waarbij de coördinaten opgesomd in de eigenschap Size, het eindpunt van de lijn aangeven.
Dim Doc As Object
Dim Pagina As Object
Dim LijnVorm As Object
Dim Punt As New com.sun.star.awt.Point
Dim Grootte As New com.sun.star.awt.Size
Punt.x = 1000
Punt.y = 1000
Grootte.Width = 10000
Grootte.Height = 10000
Doc = ThisComponent
Pagina = Doc.DrawPages(0)
LijnVorm = Doc.createInstance("com.sun.star.drawing.LineShape")
LijnVorm.Size = Grootte
LijnVorm.Position = Punt
Pagina.add(LijnVorm)
Veelhoekige vormen
Apache OpenOffice ondersteunt ook complexe veelhoekige vormen door de service com.sun.star.drawing.PolyPolygonShape. Strikt gesproken is een PolyPolygoon niet een eenvoudige veelhoek, maar een meervoudige veelhoek. Verschillende onafhankelijke lijsten die hoekpunten bevatten kunnen daardoor worden gespecificeerd en gecombineerd om een compleet object te vormen.
Net als met rechthoekige vormen worden alle eigenschappen voor opmaak van teken-objecten ook verschaft voor meervoudige veelhoeken:
- Eigenschappen voor vulling
- com.sun.star.drawing.FillProperties
- Eigenschappen voor lijnen
- com.sun.star.drawing.LineProperties
- Eigenschappen voor tekst
- com.sun.star.drawing.Text (met com.sun.star.style.CharacterProperties en com.sun.star.style.ParagraphProperties)
- Eigenschappen voor schaduw
- com.sun.star.drawing.ShadowProperties
De service PolyPolygonShape heeft ook een eigenschap die u de coördinaten van een veelhoek laten definiëren:
- PolyPolygon (Array) – veld dat de coördinaten van de veelhoek bevat (dubbele tabel met de punten van het type com.sun.star.awt.Point)
Het volgende voorbeeld toont hoe u een driehoek kunt definiëren met de service PolyPolygonShape.
Dim Doc As Object
Dim Pagina As Object
Dim VeelhoekVorm As Object
Dim Veelhoek As Variant
Dim Coördinaten(2) As New com.sun.star.awt.Point
Doc = ThisComponent
Page = Doc.DrawPages(0)
VeelhoekVorm = Doc.createInstance("com.sun.star.drawing.PolyPolygonShape")
Pagina.add(VeelhoekVorm) ' Pagina.add moet plaatsvinden voordat de coördianten worden ingesteld
Coördinaten(0).x = 1000
Coördinaten(1).x = 7500
Coördinaten(2).x = 10000
Coördinaten(0).y = 1000
Coördinaten(1).y = 7500
Coördinaten(2).y = 5000
VeelhoekVorm.PolyPolygon = Array(Coördinaten())
Omdat de punten van een veelhoek worden gedefinieerd als absolute waarden, hoeft u de grootte of de startpositie van een veelhoek niet te specificeren. In plaats daarvan moet u een tabel van de punten maken, dit verpakken in een tweede tabel (met behulp van de aanroep Array(Coordinates())), en dan die tabel toewijzen aan de veelhoek. Voordat de corresponderende aanroep kan worden uitgevoerd, moet de veelhoek worden ingevoegd in het document.
De dubbele array in de definitie staat u toe complexe vormen te maken door verschillende veelhoeken samen te voegen. Bijvoorbeeld, u kunt een rechthoek maken en daarin dan een andere rechthoek plaatsen om een gat in de originele rechthoek te maken:
Dim Doc As Object
Dim Pagina As Object
Dim VeelhoekVorm As Object
Dim Veelhoek As Variant
Dim Vierkant1(3) As New com.sun.star.awt.Point
Dim Vierkant2(3) As New com.sun.star.awt.Point
Dim Vierkant3(3) As New com.sun.star.awt.Point
Doc = ThisComponent
Pagina = Doc.DrawPages(0)
VeelhoekVorm = Doc.createInstance("com.sun.star.drawing.PolyPolygonShape")
Pagina.add(VeelhoekVorm) ' Pagina.add moet plaatsvinden voordat de coördinaten worden ingesteld
Vierkant1(0).x = 5000
Vierkant1(1).x = 10000
Vierkant1(2).x = 10000
Vierkant1(3).x = 5000
Vierkant1(0).y = 5000
Vierkant1(1).y = 5000
Vierkant1(2).y = 10000
Vierkant1(3).y = 10000
Vierkant2(0).x = 6500
Vierkant2(1).x = 8500
Vierkant2(2).x = 8500
Vierkant2(3).x = 6500
Vierkant2(0).y = 6500
Vierkant2(1).y = 6500
Vierkant2(2).y = 8500
Vierkant2(3).y = 8500
Vierkant3(0).x = 6500
Vierkant3(1).x = 8500
Vierkant3(2).x = 8500
Vierkant3(3).x = 6500
Vierkant3(0).y = 9000
Vierkant3(1).y = 9000
Vierkant3(2).y = 9500
Vierkant3(3).y = 9500
VeelhoekVorm.PolyPolygon = Array(Vierkant1(), Vierkant2(), Vierkant3())
Ten aanzien van het feit welk gebied wordt gevuld en welk gebied gaten zijn, hanteert Apache OpenOffice een eenvoudige regel: de rand van de buitenste vorm is altijd de buitenste grens van de meervoudige veelhoek. De volgende lijn binnenwaarts is de binnengrens van de vorm en markeert de overgang naar het eerste gat. Als er nog een lijn binnenwaarts is, markeert die de overgang naar een gevuld gebied.
Afbeeldingen
De laatste van de hier gepresenteerde tekenelementen zijn de grafische objecten die zijn gebaseerd op de service com.sun.star.drawing.GraphicObjectShape. Deze kan worden gebruikt met elke afbeelding binnen Apache OpenOffice waarvan het uiterlijk kan worden opgenomen met behulp van een heel bereik aan eigenschappen.
Grafische objecten ondersteunen twee van de algemene eigenschappen voor opmaak :
- Eigenschappen voor tekst
- com.sun.star.drawing.Text (met com.sun.star.style.CharacterProperties en com.sun.star.style.ParagraphProperties)
- Eigenschappen voor schaduw
- com.sun.star.drawing.ShadowProperties
Aanvullende eigenschappen die worden ondersteund door grafische objecten zijn:
- GraphicURL (String)
- URL van de afbeelding
- AdjustLuminance (Short)
- helderheid van de kleuren als een percentage (negatieve waarden zijn ook toegestaan)
- AdjustContrast (Short)
- contrast als een percentage (negatieve waarden zijn ook toegestaan)
- AdjustRed (Short)
- waarde voor rood als een percentage (negatieve waarden zijn ook toegestaan)
- AdjustGreen (Short)
- waarde voor groen als een percentage (negatieve waarden zijn ook toegestaan)
- AdjustBlue (Short)
- waarde voor blauw als een percentage (negatieve waarden zijn ook toegestaan)
- Gamma (Short)
- gamma-waarde van een afbeelding
- Transparency (Short)
- transparantie van een afbeelding als een percentage;GraphicColorMode (enum):modus kleur, bijvoorbeeld: standaard, grijswaarden, zwart en wit (standaard waarde overeenkomend met com.sun.star.drawing.ColorMode )
Het volgende voorbeeld toont hoe een pagina in een grafisch object in te voegen.
Dim Doc As Object
Dim Pagina As Object
Dim GrafischObjectVorm As Object
Dim Punt As New com.sun.star.awt.Point
Dim Grootte As New com.sun.star.awt.Size
Punt.x = 1000 ' specificaties, niet relevant omdat latere because latter
coördinaten bindend zijn
Punt.y = 1000
Grootte.Width = 10000
Grootte.Height = 10000
Doc = ThisComponent
Pagina = Doc.DrawPages(0)
GrafischObjectVorm = Doc.createInstance("com.sun.star.drawing.GraphicObjectShape")
GrafischObjectVorm.Size = Grootte
GrafischObjectVorm.Position = Punt
GrafischObjectVorm.GraphicURL = "file:///c:/test.jpg"
GrafischObjectVorm.AdjustBlue = -50
GrafischObjectVorm.AdjustGreen = 5
GrafischObjectVorm.AdjustBlue = 10
GrafischObjectVorm.AdjustContrast = 20
GrafischObjectVorm.AdjustLuminance = 50
GrafischObjectVorm.Transparency = 40
GrafischObjectVorm.GraphicColorMode = com.sun.star.drawing.ColorMode.STANDARD
Pagina.add(GrafischObjectVorm)
Deze code voegt de afbeelding test.jpg in en past zijn verschijning aan met behulp van de eigenschappen Adjust. In dit voorbeeld wordt de afbeelding weergegeven als een 40 procent transparant terwijl andere kleuraanpassingen niet plaatsvinden (GraphicColorMode = STANDARD).
Content on this page is licensed under the Public Documentation License (PDL). |