Rajzobjektumok szerkesztése

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


Objektumok csoportosítása

Sokszor előfordul, hogy hasznos az egyes rajzobjektumokat csoportosítani, amelyek így egyetlen nagy objektumként viselkednek.

A következő példa két rajzobjektumot von össze:

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
' négyszög-rajzelem létrehozása
Square = Doc.createInstance("com.sun.star.drawing.RectangleShape")
Square.Size = Size
Square.Position = Point
Square.FillColor = RGB(255,128,128)  
Page.add(Square)
 
' kör-rajzelem létrehozása
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)
 
' a kör és a négyszög kombinálása
Shapes = createUnoService("com.sun.star.drawing.ShapeCollection")
Shapes.add(Square)
 
Shapes.add(Circle)
Group = Page.group(Shapes)
' kombinált rajzelemek középre helyezése
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

Ez a program létrehoz egy négyszöget és egy kört, majd beszúrja őket egy oldalra. Ezután létrehoz egy objektumot, amely támogatja a com.sun.star.drawing.ShapeCollection szolgáltatást, és az Add metódussal hozzáadja a négyszöget és kört ehhez az objektumhoz. A ShapeCollection objektumot hozzáadja az oldalhoz a Group metódussal, és visszaadja a Group objektumot, amely önálló Shape objektumként szerkeszthető.

Ha a csoport egyes tagjait akarjuk formázni, akkor formázzuk őket, mielőtt a csoporthoz adnánk őket. Az objektumok nem módosíthatók, ha már a csoport tagjai.

Rajzobjektumok forgatása és döntése

Az előző részekben leírt összes rajzobjektum forgatható és dönthető a com.sun.star.drawing.RotationDescriptor szolgáltatás használatával.

A szolgáltatás a következő tulajdonságokkal rendelkezik:

RotateAngle (hosszú egész)
forgatás szöge századfokban.
ShearAngle (hosszú egész)
döntés szöge századfokban.

A következő példa létrehoz egy négyszöget, és elforgatja 30 fokban a RotateAngle tulajdonsá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.RotateAngle = 3000
 
Page.add(RectangleShape)

A következő példa ugyanazt a négyszöget hozza létre, mint az előző példa, de most 30 százalékkal eldönti a ShearAngle tulajdonsá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.ShearAngle = 3000
 
Page.add(RectangleShape)

Keresés és csere

Ahogy a szöveges dokumentumokban is, úgy a rajzobjektumokban is lehet keresni és cserélni. Ez a funkció hasonló a szöveges dokumentumoknál a Szöveges dokumentumok című fejezetben leírthoz. Viszont a rajzobjektumoknál a kereséshez használt leíróobjektum nem közvetlenül a dokumentumobjektumon keresztül van létrehozva, hanem a hozzá tartozó karakterszinten keresztül. A következő példa bemutatja a cserefolyamatot egy rajzban:

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 = "kutya"
ReplaceDescriptor.ReplaceString = "macska"
 
For I = 0 to Doc.drawPages.Count - 1
   Page = Doc.drawPages(I)
   Page.ReplaceAll(ReplaceDescriptor)  
Next I

A program először a dokumentum DrawPage objektumával létrehoz egy ReplaceDescriptor objektumot, majd ezt a leírót alkalmazza egy ciklusban a rajzdokumentum összes oldalára.


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