A rajzok felépítése
- A rajzok felépítése
- Rajzobjektumok szerkesztése
- Bemutatók
Az Apache OpenOffice 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 Apache OpenOffice 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 Apache OpenOffice 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 Apache OpenOffice-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 Apache OpenOffice Basicben 100-nál nagyobb érték is megadható).
- EndIntensity (rövid egész)
- az EndColor intenzitása százalékban (az Apache OpenOffice Basicben 100-nál nagyobb érték is megadható).
- StepCount (rövid egész)
- színátmenet színeinek száma, amelyekre az Apache OpenOffice 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 Apache OpenOffice 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 Apache OpenOffice 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: Apache OpenOffice 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 Apache OpenOffice 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 Apache OpenOffice 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 Apache OpenOffice 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 Apache OpenOffice 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). |