A rajzok felépítése

From Apache OpenOffice Wiki
Jump to: navigation, search
Book.png


Az OpenOffice.org nem korlátozza az oldalak számát egy rajzdokumentumban. Minden oldalt külön készíthetünk el. Szintén nincs korlátozás az egy oldalon szereplő rajzelemek számában.

Oldalak

A rajzdokumentum oldalai a DrawPages listán keresztül érhetők el. Az egyes oldalak a nevük vagy számuk alapján érhető el. Ha a dokumentumban egy oldal van, és ennek neve Dia 1, akkor a következő példák azonosak.

1. példa:

Dim Doc As Object
Dim Page As Object
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)

2. példa:

Dim Doc As Object   
Dim Page As Object
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages.getByName("Dia 1")

Az 1. példában az oldalt a száma alapján éri el a program (a számozás 0-nál kezdődik). A második példában pedig a neve alapján, a getByName metódus használatával.

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

Az előző példa egy olyan oldalobjektumot ad vissza, mely támogatja a com.sun.star.drawing.DrawPage szolgáltatást. A szolgáltatás a következő tulajdonságokkal rendelkezik:

BorderLeft (hosszú egész)
a bal oldali keret századmilliméterben.
BorderRight (hosszú egész)
a jobb oldali keret századmilliméterben.
BorderTop (hosszú egész)
a felső keret századmilliméterben.
BorderBottom (hosszú egész)
az alsó keret századmilliméterben.
Width (hosszú egész)
az oldal szélessége századmilliméterben.
Height (hosszú egész)
az oldal magassága századmilliméterben.
Number (rövid egész)
oldalak száma (a számozás 1-től kezdődik), csak olvasható.
Orientation (enumeráció)
az oldal tájolása (a com.sun.star.view.PaperOrientation enumerációnak megfelelően).

Ha ezeket a beállításokat módosítjuk, akkor az hatással lesz a dokumentum összes oldalára.

A következő példa a megnyitott rajzdokumentum oldalméretét 20 x 20 centiméterre állítja, az oldalmargót pedig 0,5 centiméterre:

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

A rajzobjektumok alapvető tulajdonságai

A rajzobjektumok magukban foglalják az alakzat- (négyszögek, körök stb.), vonal-és szövegobjektumokat. Ezek mindegyike rendelkezik számos azonos funkcióval, és támogatják a com.sun.star.drawing.Shape szolgáltatást. Ez a szolgáltatás meghatározza a rajzobjektum Size és Position tulajdonságát.

Az OpenOffice.org Basic számtalan más szolgáltatást is biztosít, amelyeken keresztül módosíthatjuk az olyan tulajdonságokat, mint például a formázás, valamint kitöltéseket használhatunk. A rendelkezésre álló formázási lehetőségek a rajzobjektum típusától függenek.

A következő példa létrehoz és beszúr egy négyszöget a rajzobjektumba:

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)

Ez a példa a StarDesktop.CurrentComponent hívást használja annak megállapítására, hogy melyik dokumentum van megnyitva. Az így meghatározott dokumentumobjektum a drawPages(0) függvényhívással visszaadja a rajzobjektum első oldalát.

Ezután a program inicializál egy Point és egy Size struktúrát a rajzobjektum kezdőpontjával (bal felső sarok) és méretével. A hosszméretek századmilliméterben vannak megadva.

A program ezután a Doc.createInstance használatával létrehoz egy négyszöget a com.sun.star.drawing.RectangleShape szolgáltatás alapján. Végül a program a rajzobjektumot hozzárendeli egy oldalhoz a Page.add használatával.

Rajztulajdonságok

Ez a szakasz négy szolgáltatást ismertet, és mindegyiknél a példaprogram egy négyszög-rajzelemet használ a különböző formázási típusok bemutatására. A kitöltési tulajdonságok a com.sun.star.drawing.FillProperties szolgáltatásban vannak összegyűjtve.

Az OpenOffice.org a kitöltési terület négy fő formázási típusát ismeri fel. A legegyszerűbb az egyszínű kitöltés. A színátmenet és a vonalkázás már több színt is használ. A negyedik változat egy adott ábrát vetít a kitöltési területre.

Egy rajzobjektum kitöltési módját a FillStyle tulajdonság határozza meg. A használható értékeket a com.sun.star.drawing.FillStyle tartalmazza.

Egyszínű kitöltés

Az egyszínű kitöltés főtulajdonsága a

FillColor (hosszú egész szám)
a terület kitöltési színe.

A kitöltési mód használatához a FillStyle tulajdonságot a SOLID kitöltési módra kell állítani.

A következő példa létrehoz egy négyszögalakzatot, és kitölti azt pirossal (RGB-érték: 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)

Színátmenet

Ha a FillStyle tulajdonságot a GRADIENT értékre állítjuk az OpenOffice.org-dokumentum kitöltési területén színátmenetet alkalmazhatunk.

Ha egy előre definiált színátmenetet akarunk alkalmazni, akkor használjuk a FillTransparenceGradientName tulajdonság megfelelő nevét. Ha saját színátmenetet akarunk használni, töltsük ki a com.sun.star.awt.Gradient struktúrát, és rendeljük hozzá a FillGradient tulajdonsághoz. Ez a tulajdonság a következő lehetőségeket biztosítja:

Style (enumeráció)
a színátmenet típusa, például egyenletes vagy sugárirányú, (alapértelmezett értékek a com.sun.star.awt.GradientStyle tulajdonságnak megfelelően).
StartColor (hosszú egész)
a színátmenet kezdőszíne.
EndColor (hosszú egész)
a színátmenet befejezőszíne.
Angle (rövid egész)
színátmenet szöge tizedfokban.
XOffset (rövid egész)
a színátmenet kezdésének X koordinátája századmilliméterben megadva.
XOffset (rövid egész)
a színátmenet kezdésének Y koordinátája századmilliméterben megadva.
StartIntensity (rövid egész)
a StartColor intenzitása százalékban (az OpenOffice.org Basicben 100-nál nagyobb érték is megadható).
EndIntensity (rövid egész)
az EndColor intenzitása százalékban (az OpenOffice.org Basicben 100-nál nagyobb érték is megadható).
StepCount (rövid egész)
színátmenet színeinek száma, amelyekre az OpenOffice.org kiszámítja színátmenetet.

A következő példa bemutatja a színátmenetek használatát a com.sun.star.awt.Gradient struktúra használatával:

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)

Ez a példa egy egyenletes színátmenetet hoz létre (Style = LINEAR). Az átmenet pirossal kezdődik (StartColor) a bal felső sarokban, és egy 45 fokos (Angle) átmenetben zöld lesz (EndColor) a jobb alsó sarokban. A kezdő és befejező szín intenzitása 150 százalék (StartIntensity és EndIntensity), ami azt eredményezi, hogy a színek fényesebbnek látszanak a StartColor és a EndColor tulajdonságban megadottaknál. A színátmenet száz különböző színnel jelenik meg (StepCount).

Vonalkázás

Ha vonalkázott kitöltést akarunk használni, állítsuk a FillStyle tulajdonságot HATCH értékre. A vonalkázást meghatározó programrészlet nagyon hasonló a színátmenetet meghatározóhoz. Ismét egy külső struktúrát, ebben az esetben a com.sun.star.drawing.Hatch, használunk a vonalkázás meghatározásához. A vonalkázás struktúrája a következő tulajdonságokkal rendelkezik:

Style (enumeráció)
a vonalkázás típusa: egyszerű, négyszögletes vagy négyszögletes átlós vonalakkal (alapértelmezett értékek a com.sun.star.awt.HatchStyle tulajdonság szerint).
Color (hosszú egész)
vonalak színe.
Distance (hosszú egész)
a vonalak közti távolság századmilliméterben.
Angle (rövid egész)
vonalkázás szöge tizedfokban.

A következő példa bemutatja a vonalkázás struktúrájának használatát:

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)

A program létrehoz egy egyszerű vonalkázási struktúrát (HatchStyle = SINGLE), amelynek vonalai 45 fokos szögben állnak (Angle). A vonalak sötétszürkék (Color), és egymástól 0,2 milliméterre vannak (Distance).

Bitképek

Ha kitöltésként egy bitképet akarunk használni, állítsuk a FillStyle tulajdonságot a BITMAP értékre. Ha a bitkép már szerepel az OpenOffice.org programban, akkor csak meg kell adnia a nevét a FillBitMapName tulajdonságban, és a megjelenítési típusát (egyszerű, mozaik vagy nyújtott) a FillBitmapMode tulajdonságban (alapértelmezett értékek a com.sun.star.drawing.BitmapMode tulajdonság szerint).

Ha külső bitképfájlt akarunk használni, adjuk meg az URL-jét a FillBitmapURL tulajdonságban.

A következő példa létrehoz egy négyszöget, és kitölti az OpenOffice.org programban megtalálható a Sky bitképpel mozaikkitöltés használatával:

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)

Átlátszóság

Minden kitöltés átlátszóságát beállíthatjuk. A legegyszerűbb módja egy rajzelem átlátszósága beállításának a FillTransparence tulajdonság használata.

A következő példa létrehoz egy piros négyszöget 50 százalékos átlátszósággal.

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)

Ha a kitöltést teljesen átlátszóvá akarjuk tenni, állítsuk a FillTransparence tulajdonságot 100 értékre.

A FillTransparence tulajdonságon felül a com.sun.star.drawing.FillProperties szolgáltatás a FillTransparenceGradient tulajdonságot is biztosítja. Ezzel a tulajdonsággal lehet megadni a kitöltési terület átlátszóságát szabályozó színátmenetet.

Vonaltulajdonságok

Minden rajzobjektum, amelynek lehet kerete, támogatja a com.sun.star.drawing.LineStyle szolgáltatást. Néhány tulajdonság, amelyet a szolgáltatás biztosít:

LineStyle (enumeráció)
vonal típusa (alapértelmezett értékek a com.sun.star.drawing.LineStyle tulajdonságnak megfelelően).
LineColor (hosszú egész)
a vonal színe.
LineTransparence (rövid egész)
a vonal átlátszósága.
LineWidth (hosszú egész)
a vonal vastagsága századmilliméterben.
LineJoint (enumeráció)
az összekötési pontok átmenete (alapértelmezett értékek a com.sun.star.drawing.LineJoint tulajdonságnak megfelelően).

A következő példa létrehoz egy négyszöget sima kerettel (LineStyle = SOLID), amely 5 milliméter vastag (LineWidth), és 50 százalékban átlátszó. A keret vonalának bal és jobb széle túlnyúlik a metszéspontjukon (LineJoint = MITER), így egy derékszöget képeznek.

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)

A felsorolt tulajdonságokon felül a com.sun.star.drawing.LineStyle szolgáltatás lehetővé teszi pontozott és szaggatott vonal létrehozását is. További információkért lásd: OpenOffice.org API-referencia.

Szövegtulajdonságok (rajzobjektumok)

A com.sun.star.style.CharacterProperties és a com.sun.star.style.ParagraphProperties szolgáltatással formázható a szöveg a rajzobjektumokban. Ezek a szolgáltatások az egyes karakterekre és bekezdésekre vonatkoznak, és részletes információt a Szöveges dokumentumok fejezetben találhatunk róluk.

A következő példa szöveget szúr be egy négyszögbe, és formázza a betűtípusát a com.sun.star.style.CharacterProperties szolgáltatással.

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 = "Ez egy teszt."
RectangleShape.CharWeight = com.sun.star.awt.FontWeight.BOLD
RectangleShape.CharFontName = "Arial"

A program a négyszög String tulajdonságával szúrja be a szöveget, és a com.sun.star.style.CharacterProperties szolgáltatás CharWeight, illetve CharFontName tulajdonságával formázza a szöveg betűtípusát.

A szöveg csak azután szúrható be, miután a rajzobjektum hozzá lett adva az oldalhoz. A com.sun.star.drawing.Text szolgáltatással beállítható a rajzobjektum szövegének helye és formátuma. Az alábbiakban láthatók ennek a szolgáltatásnak a legfőbb tulajdonságai:

TextAutoGrowHeight (logikai érték)
a rajzelem magasságát az általa tartalmazott szöveghez igazítja.
TextAutoGrowWidth (logikai érték)
a rajzelem szélességét az általa tartalmazott szöveghez igazítja.
TextHorizontalAdjust (enumeráció)
a szöveg vízszintes helye a rajzelemen belül (alapértelmezett értékek a com.sun.star.drawing.TextHorizontalAdjust tulajdonság szerint).
TextVerticalAdjust (enumeráció)
a szöveg függőleges helye a rajzelemen belül (alapértelmezett értékek a com.sun.star.drawing.TextVerticalAdjust tulajdonság szerint).
TextLeftDistance (hosszú egész)
a szöveg bal oldala és a rajzelem közti távolság századmilliméterben.
TextRightDistance (hosszú egész)
a szöveg jobb oldala és a rajzelem közti távolság századmilliméterben.
TextUpperDistance (hosszú egész)
a szöveg felső oldala és a rajzelem közti távolság századmilliméterben.
TextLowerDistance (hosszú egész)
a szöveg alsó oldala és a rajzelem közti távolság századmilliméterben.

A következő példa bemutatja a fent említett tulajdonságok használatát.

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 = "Ez egy teszt."   ' Csak a Page.add után állhat!
 
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

Ez a program beszúr egy rajzelemet egy oldalra, majd szöveget ír a rajzobjektum bal felső sarkába a TextVerticalAdjust és a TextHorizontalAdjust tulajdonsággal. A szöveg széle és a rajzobjektum közti minimális távolság három milliméter.

Árnyéktulajdonságok

Árnyékot adhatunk a legtöbb rajzobjektumhoz a com.sun.star.drawing.ShadowProperties szolgáltatással. A szolgáltatás tulajdonságai:

Shadow (logikai érték)
az árnyék aktiválása.
ShadowColor (hosszú egész)
az árnyék színe.
ShadowTransparence (rövid egész)
az árnyék átlátszósága.
ShadowXDistance (hosszú egész)
az árnyék rajzobjektumtól mért függőleges távolsága századmilliméterben.
ShadowYDistance (hosszú egész)
az árnyék rajzobjektumtól mért vízszintes távolsága századmilliméterben.

A következő példa létrehoz egy négyszöget egy árnyékkal, amely függőlegesen és vízszintesen 2 milliméterre van a négyszögtől. Az árnyék sötétszürkén jelenik meg, 50 százalékos átlátszósággal.

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)

A különböző rajzobjektumok áttekintése

Négyszögalakzat

A négyszögalakzat-objektumok (com.sun.star.drawing.RectangleShape) a következő objektumokat támogatják a formázáshoz:

Kitöltési tulajdonságok
com.sun.star.drawing.FillProperties
Vonaltulajdonságok
com.sun.star.drawing.LineProperties
Szövegtulajdonságok
com.sun.star.drawing.Text (a com.sun.star.style.CharacterProperties és a com.sun.star.style.ParagraphProperties szolgáltatással)
Árnyéktulajdonságok
com.sun.star.drawing.ShadowProperties
CornerRadius (hosszú egész)
a sarkok kerekítési sugara századmilliméterben.

Körök és ellipszisek

A com.sun.star.drawing.EllipseShape szolgáltatással lehet köröket és ellipsziseket létrehozni. A szolgáltatás a következőket támogatja:

Kitöltési tulajdonságok
com.sun.star.drawing.FillProperties
Vonaltulajdonságok
com.sun.star.drawing.LineProperties
Szövegtulajdonságok
com.sun.star.drawing.Text (a com.sun.star.style.CharacterProperties és a com.sun.star.style.ParagraphProperties szolgáltatással)
Árnyéktulajdonságok
com.sun.star.drawing.ShadowProperties

Ezeken a szolgáltatásokon felül a körök és ellipszisek is támogatják ezeket a tulajdonságokat:

CircleKind (enumeráció)
a kör vagy ellipszis típusa (alapértelmezett értékek a com.sun.star.drawing.CircleKind tulajdonságnak megfelelően)
CircleStartAngle (hosszú egész)
kezdőszög tizedfokban (csak kör- vagy ellipszisszeleteknél)
CircleEndAngle (hosszú egész)
befejezőszög tizedfokban (csak kör- vagy ellipszisszeleteknél)

A CircleKind tulajdonság meghatározza, hogy egy objektum teljes kör, körszelet vagy körcikk. A következő értékek használhatók:

com.sun.star.drawing.CircleKind.FULL
teljes kör vagy ellipszis.
com.sun.star.drawing.CircleKind.CUT
körszelet (a kör egy része, amelynek határolófelületei közvetlenül érintkeznek).
com.sun.star.drawing.CircleKind.SECTION
körcikk.
com.sun.star.drawing.CircleKind.ARC
szög (körvonal nélkül).

A következő példa létrehoz egy 70 fokos körcikket (amely a 20 fokos kezdéstől a 90 fokos befejezésig tart).

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)

Vonalak

Az OpenOffice.org a com.sun.star.drawing.LineShape szolgáltatást biztosítja a vonalobjektumokhoz. A vonalobjektumok támogatják az összes általános formázási szolgáltatást, kivéve a területekre vonatkozókat. A LineShape szolgáltatáson keresztül a következő tulajdonságok érhetők el:

Vonaltulajdonságok
com.sun.star.drawing.LineProperties
Szövegtulajdonságok
com.sun.star.drawing.Text (a com.sun.star.style.CharacterProperties és a com.sun.star.style.ParagraphProperties szolgáltatással)
Árnyéktulajdonságok
com.sun.star.drawing.ShadowProperties

A következő példa létrehoz és formáz egy vonalat a fent említett tulajdonságok használatával. A vonal kezdőpontját a Location tulajdonság határozza meg, míg a Size tulajdonságban megadott koordináták meghatározzák a vonal végét.

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)

Polipoligon-alakzatok

Az OpenOffice.org támogatja az összetett poligonális alakzatokat a com.sun.star.drawing.PolyPolygonShape szolgáltatáson keresztül. Szigorúan véve a polipoligon nem egyetlen poligon, hanem több. Több független, sarokpontokat tartalmazó lista megadható és kombinálható, amelyek együtt egy teljes objektumot alkotnak.

Ahogy a négyszögalakzatoknál is, úgy a polipoligonoknál is a rajzobjektumok összes tulajdonsága rendelkezésre áll.

Kitöltési tulajdonságok
com.sun.star.drawing.FillProperties
Vonaltulajdonságok
com.sun.star.drawing.LineProperties
Szövegtulajdonságok
com.sun.star.drawing.Text (a com.sun.star.style.CharacterProperties és a com.sun.star.style.ParagraphProperties szolgáltatással)
Árnyéktulajdonságok
com.sun.star.drawing.ShadowProperties

A PolyPolygonShape szolgáltatás rendelkezik egy tulajdonsággal, amellyel megadhatók egy poligon koordinátái:

  • PolyPolygon (tömb):a poligon koordinátáit tartalmazó tömb (dupla pontosságú értékeket tartalmazó tömb, com.sun.star.awt.Point típusú pontokkal).

A következő példa bemutatja, hogyan hozható létre egy háromszög a PolyPolygonShape szolgáltatással.

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)   ' A Page.add metódusnak meg kell előznie a koordináták beállítását.
 
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())

Mivel a poligon pontjai abszolút értékek, nem kell megadnunk a poligon méretét vagy kezdőpontját. Ehelyett, létre kell hozni egy tömböt a pontokból, beágyazni ezt a tömböt egy másik tömbbe (az Array(koordináták) függvénnyel), majd ezt a tömböt hozzárendelni a poligonhoz. A függvényhívás előtt a poligont be kell szúrni a dokumentumba.

A dupla pontosságú tömbbel lehetővé válik, hogy összetett alakzatokat hozzunk létre több poligon összevonásából. Például létrehozhatunk egy négyszöget, majd beszúrhatunk egy másik négyszöget annak belsejébe, és létrehozhatunk egy lyukat az eredeti négyszögben:

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)   ' A Page.add metódusnak meg kell előznie a koordináták beállítását.
 
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())

Arra tekintettel, hogy melyik terület jelenti a kitöltött részt, és melyik terület a lyukat, az OpenOffice.org egy egyszerű szabályt alkalmaz: a külső alakzat körvonala mindig a poligon külső kerete. A következő vonal befelé az alakzat belső kerete, és jelzi a lyuk kezdetét. Ha még egy vonal van befelé, akkor az ismét egy lyuk kezdete.

Képek

A legutoljára bemutatott rajzelemek a képobjektumok, amelyek a com.sun.star.drawing.GraphicObjectShape szolgáltatáson alapulnak. Ezek bármilyen képpel használhatók az OpenOffice.org programban, amelyek megjelenése számos tulajdonsággal módosítható.

A képobjektumok az általános formázótulajdonságok közül kettőt támogatnak:

Szövegtulajdonságok
com.sun.star.drawing.Text (a com.sun.star.style.CharacterProperties és a com.sun.star.style.ParagraphProperties szolgáltatással)
Árnyéktulajdonságok
com.sun.star.drawing.ShadowProperties

A képobjektumok által támogatott egyéb tulajdonságok:

GraphicURL (karakterlánc)
a kép URL-je.
AdjustLuminance (rövid egész)
színek fényereje százalékban (negatív értékek is megadhatók).
AdjustContrast (rövid egész)
színek kontrasztja százalékban (negatív értékek is megadhatók).
AdjustRed (rövid egész)
piros szín százalékban (negatív értékek is megadhatók).
AdjustGreen (rövid egész)
zöld szín százalékban (negatív értékek is megadhatók).
AdjustBlue (rövid egész)
kék szín százalékban (negatív értékek is megadhatók).
Gamma (rövid egész)
kép gammaértéke.
Transparency (rövid egész)
kép átlátszósága százalékban.
GraphicColorMode (enumeráció)
színmód, például normál, szürkeárnyalatok, fekete-fehér (alapértelmezett érték a com.sun.star.drawing.ColorMode tulajdonságnak megfelelően.)

A következő példa bemutatja, hogyan szúrható be egy oldal egy képobjektumba.

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         ' specifikációk, nem számít a tartalmuk, mert
                       a koordináták később vannak összekapcsolva
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)

A kód beszúrja a test.jpg képet, és beállítja a megjelenését az Adjust tulajdonságokkal. Ebben a példában a kép 40 százalékos átlátszósággal jelenik meg, és nincs más színkonverzió (GraphicColorMode = STANDARD).


Content on this page is licensed under the Public Documentation License (PDL).
Personal tools