Содержащиеся вНайти другие документыРесурсы поддержки | Загрузить это руководство в формате PDF (1551 КБ)
Kapitel 8 Zeichnungen und PräsentationenDieses Kapitel gibt eine Einführung in die makrogesteuerte Erstellung und Bearbeitung von Zeichnungen. Im ersten Abschnitt wird der Aufbau von Zeichnungen, einschließlich der darin enthaltenen grundlegenden Elemente, beschrieben. Im zweiten Abschnitt werden komplexere Bearbeitungsfunktionen wie das Gruppieren, Drehen und Skalieren von Objekten behandelt. Informationen zum Erstellen, Öffnen und Speichern von Zeichnungen finden Sie in Kapitel 5, Arbeiten mit StarOffice-Dokumenten. Der Aufbau von ZeichnungenIn StarOffice ist die Seitenanzahl, über die ein Zeichnungsdokument verfügen kann, unbegrenzt. Sie können dabei jede Seite individuell entwerfen. Auch die Anzahl von Zeichnungselementen, die einer Seite hinzugefügt werden können, ist unbegrenzt. Dieser Eindruck wird durch das Vorhandensein von Ebenen (Layer) unwesentlich kompliziert. Standardmäßig enthält jedes Zeichnungsdokument die Ebenen Layout, Steuerelemente (Controls) und Maßlinien (Dimension Lines), wobei alle Zeichnungselemente der Ebene Layout hinzugefügt werden. Es besteht auch die Möglichkeit, neue Ebenen hinzuzufügen. Weitere Informationen zu Zeichnungsebenen finden Sie im "StarOffice Developer's Guide". SeitenDie Seiten eines Zeichnungsdokuments sind über die Liste DrawPages verfügbar. Auf einzelne Seiten können Sie wahlweise über ihre Nummer oder ihren Namen zugreifen. Enthält ein Dokument eine Seite und heißt diese Slide 1, so sind die folgenden Beispiele identisch. Beispiel 1: Dim Doc As Object Dim Page As Object Doc = StarDesktop.CurrentComponent Page = Doc.drawPages(0) Beispiel 2: Dim Doc As Object
Dim Page As Object
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages.getByName("Slide 1")
In Beispiel 1 wird die Seite über ihre Nummer adressiert (die Zählung beginnt hier mit 0). Im zweiten Beispiel erfolgt der Zugriff über den Namen mit der Methode getByName. Dim sUrl As String, sFilter As String
Dim sOptions As String
Dim oSheets As Object, oSheet As Object
oSheets = oDocument.Sheets
If oSheets.hasByName("Link") Then
oSheet = oSheets.getByName("Link")
Else
oSheet = oDocument.createInstance("com.sun.star.sheet.Spreadsheet")
oSheets.insertByName("Link", oSheet)
oSheet.IsVisible = False
End If
Der vorangehende Aufruf gibt ein Seitenobjekt zurück, das den Dienst com.sun.star.drawing.DrawPage unterstützt. Der Dienst erkennt folgende Eigenschaften:
Werden diese Einstellungen geändert, so wirkt sich dies auf alle Seiten des Dokuments aus. Das folgende Beispiel setzt die Seitengröße des gerade geöffneten Zeichnungsdokuments auf 20 x 20 cm bei einem Seitenrand von jeweils 0,5 cm: 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 Elementare Eigenschaften von ZeichnungsobjektenZu den Zeichnungsobjekte gehören Formen (Rechtecke, Kreise usw.), Linien und Textobjekte. All diese Objekte besitzen eine Reihe gemeinsamer Eigenschaften und unterstützen den Dienst com.sun.star.drawing.Shape. Dieser Dienst definiert die Eigenschaften Size und Position für ein Zeichnungsobjekt. StarOffice Basic bietet außerdem zahlreiche andere Dienste, mit denen solche Eigenschaften geändert werden können, beispielsweise Formatierung oder Anwenden von Füllungen. Welche Formatierungsoptionen zur Verfügung stehen, hängt vom Typ des Zeichnungsobjekts ab. Im folgenden Beispiel wird ein Rechteck erstellt und in ein Zeichnungsobjekt eingefügt: 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)
Das Beispiel ermittelt über den Aufruf StarDesktop.CurrentComponent das aktuell geöffnete Dokument. Das so bestimmte Dokumentobjekt gibt über den Aufruf drawPages(0) die erste Seite der Zeichnung zurück. Im Anschluss daran werden die Strukturen Point und Size mit dem Ursprungspunkt (linke obere Ecke) und der Größe des Zeichnungsobjekts initialisiert. Die Längen werden dabei in 100stel Millimeter angegeben. Der Programmcode erstellt dann mit dem Aufruf Doc.createInstance das Rechteck-Zeichnungsobjekt, wie es vom Dienst com.sun.star.drawing.RectangleShape festgelegt ist. Schließlich wird das Zeichnungsobjekt einer Seite mit einem Aufruf Page.add zugewiesen. FülleigenschaftenIn diesem Abschnitt werden vier Dienste beschrieben, wobei der Beispielprogrammcode jedes Mal ein Rechteck-Element (RectangleShape) verwendet, das mehrere Formatierungsarten in sich vereint. Fülleigenschaften sind in dem Dienst com.sun.star.drawing.FillProperties zusammengefasst. StarOffice erkennt vier Hauptarten der Formatierung eines Füllbereichs. Die einfachste Variante stellt eine einfarbige Füllung dar. Die Möglichkeiten zur Definition von Farbverläufen und Schraffuren ermöglichen Ihnen die Erzeugung zusätzlicher Farben. Schließlich besteht als vierte Variante die Möglichkeit, bereits vorhandene Grafiken in den Füllbereich hinein zu projizieren. Der Füllmodus eines Zeichnungsobjekts wird über die Eigenschaft FillStyle definiert. Die zugelassenen Werte sind in com.sun.star.drawing.FillStyle definiert. Einfarbige FüllungenDie Haupteigenschaft für einfarbige Füllungen lautet
Um den Füllmodus zu verwenden, muss die Eigenschaft FillStyle dem Füllmodus SOLID zugewiesen werden. Das folgende Beispiel erzeugt ein Rechteck und füllt es mit Rot (RGB-Wert 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)
FarbverläufeWenn die Eigenschaft FillStyle auf GRADIENT gesetzt wird, kann auf jeden Füllbereich eines StarOffice-Dokuments ein Farbverlauf angewendet werden. Wenn ein vordefinierter Farbverlauf angewendet werden soll, kann der verknüpfte Name der Eigenschaft FillTransparenceGradientName zugewiesen werden. Um einen eigenen Farbverlauf zu definieren, müssen Sie eine com.sun.star.awt.Gradient-Struktur vervollständigen, um die Eigenschaft FillGradient zuzuweisen. Diese Eigenschaft stellt folgende Optionen bereit:
Das folgende Beispiel demonstriert den Einsatz von Farbverläufen unter Zuhilfenahme der Struktur com.sun.star.awt.Gradient: Dim Doc As Object
Dim Page As Object
Dim RectangleShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
Dim Gradient As New com.sun.star.awt.Gradient
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
Gradient.Style = com.sun.star.awt.GradientStyle.LINEAR
Gradient.StartColor = RGB(255,0,0)
Gradient.EndColor = RGB(0,255,0)
Gradient.StartIntensity = 150
Gradient.EndIntensity = 150
Gradient.Angle = 450
Gradient.StepCount = 100
RectangleShape.FillStyle = com.sun.star.drawing.FillStyle.GRADIENT
RectangleShape.FillGradient = Gradient
Page.add(RectangleShape)
In diesem Beispiel wird ein linearer Farbverlauf erstellt (Style = LINEAR). Der Farbverlauf beginnt mit Rot (StartColor) in der linken oberen Ecke und verläuft in einem Winkel von 45° (Angle) nach Grün (EndColor) in der rechten unteren Ecke. Die Farbintensität der Start- und Endfarben beträgt jeweils 150 Prozent (StartIntensity und EndIntensity), was dazu führt, dass die Farben heller erscheinen, als die in den Eigenschaften StartColor und EndColor angegebenen Werte. Die Darstellung des Farbverlaufs erfolgt über 100 abgestufte Einzelfarben (StepCount). SchraffurenUm eine Schraffurfüllung zu erzeugen, muss die Eigenschaft FillStyle auf HATCH gesetzt werden. Der Programmcode zur Definition der Schraffur ähnelt stark dem für Farbverläufe. Wieder wird eine Hilfsstruktur, hier com.sun.star.drawing.Hatch, verwendet, um das Aussehen der Schraffuren zu definieren. Die Struktur für Schraffuren verfügt über folgende Eigenschaften:
Das folgende Beispiel demonstriert den Einsatz einer Schraffurstruktur (Hatch): 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)
Dieser Code erzeugt eine einfache Schraffur (HatchStyle = SINGLE), deren Linien um 45° gedreht sind (Angle). Die Linien sind dunkelgrau (Color) mit einem Abstand (Distance) von 0,2 mm. BitmapsUm eine Bitmap-Projektion als Füllung zu verwenden, muss die Eigenschaft FillStyle auf BITMAP gesetzt werden. Wenn die Bitmap in StarOffice bereits zur Verfügung steht, genügt es, deren Namen in der Eigenschaft FillBitMapName einzugeben und die gewünschte Darstellungsart (einfach, gekachelt oder gestreckt) in der Eigenschaft FillBitmapMode festzulegen (Standardwerte gemäß com.sun.star.drawing.BitmapMode). Wenn eine externe Bitmap-Datei verwendet werden soll, können Sie den URL in der Eigenschaft FillBitmapURL angeben. Das folgende Beispiel erzeugt ein Rechteck, dessen Fläche mit der in StarOffice verfügbaren Bitmap "Sky" gekachelt gefüllt wird. 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)
TransparenzSie können die Transparenz jeder angewendeten Füllung anpassen. Die einfachste Methode zum Ändern der Transparenz eines Zeichnungselements besteht in der Verwendung der Eigenschaft FillTransparence. Das folgende Beispiel erzeugt ein rotes Rechteck mit einer Transparenz von 50 Prozent. 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)
Um die Füllung vollständig transparent zu machen, wird die Eigenschaft FillTransparence auf 100 gesetzt. Über die Eigenschaft FillTransparence hinaus bietet der Dienst com.sun.star.drawing.FillProperties außerdem die Eigenschaft FillTransparenceGradient. Sie wird zum Definieren eines Farbverlaufs verwendet, der die Transparenz eines Füllbereichs festlegt. LinieneigenschaftenAlle Zeichnungsobjekte, die über eine Umrandungslinie verfügen können, unterstützen den Dienst com.sun.star.drawing.LineStyle. Einige der von diesem Dienst bereitgestellten Eigenschaften sind:
Das folgende Beispiel erzeugt ein Rechteck mit einer durchgezogenen Umrandung (LineStyle = SOLID), die eine Stärke (LineWidth) von 5 mm aufweist und zu 50 Prozent transparent ist. Der rechte und linke Rand der Linie sind bis zu ihren Schnittpunkten mit der jeweils anderen Linie durchgeführt (LineJoint = MITER), so dass ein rechter Winkel gebildet wird. 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)
Neben den aufgeführten Eigenschaften bietet der Dienst com.sun.star.drawing.LineStyle Möglichkeiten zum Zeichnen gepunkteter und gestrichelter Linien. Weitere Informationen finden Sie in der StarOffice API-Referenz. Texteigenschaften (Zeichnungsobjekte)Mit den Diensten com.sun.star.style.CharacterProperties und com.sun.star.style.ParagraphProperties kann Text in Zeichnungsobjekten formatiert werden. Diese Dienste wirken sich auf einzelne Zeichen und Absätze aus und werden detailliert in Kapitel 6 (Textdokumente) beschrieben. Im folgenden Beispiel wird Text in ein Rechteck eingefügt und die Schriftart mit dem Dienst com.sun.star.style.CharacterProperties formatiert. Dim Doc As Object
Dim Page As Object
Dim RectangleShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
Page.add(RectangleShape)
RectangleShape.String = "This is a test"
RectangleShape.CharWeight = com.sun.star.awt.FontWeight.BOLD
RectangleShape.CharFontName = "Arial"
Dieser Code verwendet die String-Eigenschaft des Rechtecks, um den Text einzufügen, und die Eigenschaften CharWeight und CharFontName des Dienstes com.sun.star.style.CharacterProperties, um die Textschriftart zu formatieren. Der Text kann erst nach dem Hinzufügen des Zeichnungsobjekts zu der Zeichenseite eingefügt werden. Zum Positionieren und Formatieren von Text in Zeichnungsobjekten können Sie auch den Dienst com.sun.star.drawing.Text verwenden. Im Folgenden werden einige der wichtigsten Eigenschaften dieses Dienstes aufgeführt:
Das folgende Beispiel demonstriert den Einsatz der genannten Eigenschaften. 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 = "Dies ist ein Test" ' Darf erst nach Page.add erfolgen!
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
Dieser Code fügt ein Zeichnungselement in eine Seite ein und fügt dann in der linken oberen Ecke des Zeichnungsobjekts über die Eigenschaften TextVerticalAdjust und TextHorizontalAdjust Text hinzu. Der Mindestabstand zwischen Text und Rand des Zeichnungsobjekts ist auf 3 mm festgelegt. SchatteneigenschaftenDen meisten Zeichnungsobjekten kann mit dem Dienst com.sun.star.drawing.ShadowProperties ein Schatten hinzugefügt werden. Die Eigenschaften des Dienstes sind:
Das folgende Beispiel erzeugt ein Rechteck mit einem Schatten, der vertikal und horizontal um 2 mm gegenüber dem Rechteck versetzt ist. Der Schatten wird dunkelgrau und mit 50 Prozent Transparenz angezeigt. 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)
Verschiedene Zeichnungsobjekte im ÜberblickRechteckeRechteck-Objekte (com.sun.star.drawing.RectangleShape) unterstützen folgende Dienste zur Formatierung von Objekten:
Kreise und EllipsenFür Kreise und Ellipsen ist der Dienst com.sun.star.drawing.EllipseShape verantwortlich, der wiederum folgende Dienste unterstützt:
Zusätzlich zu diesen Diensten stellen Kreise und Ellipsen auch diese Eigenschaften bereit:
Die Eigenschaft CircleKind bestimmt, ob ein Objekt ein vollständiger Kreis, ein Kreissegment oder ein Kreisabschnitt ist. Folgende Werte stehen zur Verfügung:
Das folgende Beispiel erzeugt ein Kreissegment mit einem Winkel von 70° (ergibt sich aus der Differenz zwischen dem Startwinkel von 20° und dem Endwinkel von 90°). 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)
LinienFür Linienobjekte hält StarOffice den Dienst com.sun.star.drawing.LineShape bereit. Linienobjekte unterstützen alle allgemeinen Formatierungsdienste, mit Ausnahme des Dienstes für Flächen. Im Folgenden finden Sie alle Eigenschaften, die mit dem Dienst LineShape verknüpft sind:
Das folgende Beispiel erzeugt und formatiert eine Linie unter Zuhilfenahme der genannten Eigenschaften. Der Anfangspunkt der Linie ist in der Location-Eigenschaft angegeben, während die in der Size-Eigenschaft enthaltenen Koordinaten den Endpunkt der Linie angeben. 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)
Vielecke (Polypolygone)StarOffice unterstützt auch komplexe polygonale Formen durch den Dienst com.sun.star.drawing.PolyPolygonShape. Streng genommen handelt es sich bei einem PolyPolygon nicht einmal um ein einfaches Vieleck, sondern um ein mehrfaches Vieleck. So lassen sich mehrere unabhängige Listen mit Eckpunkten angeben, die zu einem Gesamtobjekt zusammengefasst werden können. Analog zu den Rechtecken stehen auch für Vielecke alle Formatierungseigenschaften von Zeichnungsobjekten zur Verfügung:
Der Dienst PolyPolygonShape verfügt auch über eine Eigenschaft, mit der Sie die Koordinaten eines Polygons definieren können:
Das folgende Beispiel zeigt, wie sich mit Hilfe des Dienstes PolyPolygonShape ein Dreieck definieren lässt. Dim Doc As Object
Dim Page As Object
Dim PolyPolygonShape As Object
Dim PolyPolygon As Variant
Dim Coordinates(2) As New com.sun.star.awt.Point
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
PolyPolygonShape = Doc.createInstance("com.sun.star.drawing.PolyPolygonShape")
Page.add(PolyPolygonShape) ' Page.add muss vor dem Setzen der Koordinaten erfolgen
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())
Da die Punkte eines Polygons als Absolutwerte definiert sind, müssen Sie die Größe oder die Startposition eines Polygons nicht angeben. Stattdessen müssen Sie einen Array dieser Punkte erstellen, diesen Array in einen zweiten Array integrieren (mit Hilfe des Aufrufs Array(Coordinates())()) und diesen Array dann dem Polygon zuweisen. Bevor der entsprechend Aufruf erfolgen kann, muss das Polygon in das Dokument eingefügt werden. Der Doppel-Array in der Definition ermöglicht Ihnen die Erstellung komplexer Formen durch das Zusammenführen mehrerer Polygone. So können Sie beispielsweise ein Rechteck erstellen und dann ein weiteres darin einfügen, um in dem Originalrechteck ein Loch zu erzeugen: Dim Doc As Object
Dim Page As Object
Dim PolyPolygonShape As Object
Dim PolyPolygon As Variant
Dim Square1(3) As New com.sun.star.awt.Point
Dim Square2(3) As New com.sun.star.awt.Point
Dim Square3(3) As New com.sun.star.awt.Point
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
PolyPolygonShape = Doc.createInstance("com.sun.star.drawing.PolyPolygonShape")
Page.add(PolyPolygonShape) ' Page.add muss vor dem Setzen der Koordinaten erfolgen
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())
Im Hinblick darauf, welche Bereiche gefüllt und welche Löcher sind, wendet StarOffice eine einfache Regel an: Der Rand der äußersten Form ist immer die äußere Umrandung des PolyPolygons. Die nächste innen liegende Linie stellt die innere Umrandung der Form dar und markiert somit den Übergang zum ersten Loch. Folgt daraufhin eine weitere Linie nach innen, so markiert diese wiederum den Übergang zu einem gefüllten Bereich. GrafikenDas letzte der hier vorgestellten Zeichnungselemente sind Grafik-Objekte auf der Grundlage des Dienstes com.sun.star.drawing.GraphicObjectShape. Der Dienst kann auf alle Grafiken innerhalb von StarOffice angewendet werden, deren Aussehen mit einer ganzen Reihe von Eigenschaften angepasst werden kann. Grafikobjekte unterstützen zwei der allgemeinen Formatierungseigenschaften:
Zusätzliche von Grafikobjekten unterstützte Eigenschaften sind:
Das folgende Beispiel zeigt, wie eine Seite in ein Grafikobjekt eingefügt wird. 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 ' Angaben; unerheblich, da spätere
' Koordinaten verbindlich sind
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)
Dieser Code fügt die Grafik test.jpg ein und passt ihr Aussehen über die Adjust-Eigenschaften an. In diesem Beispiel wird die Grafik mit 40% Transparenz und ohne zusätzliche Farbumwandlungen dargestellt (GraphicColorMode = STANDARD). Bearbeiten von ZeichnungsobjektenGruppieren von ObjektenIn vielen Situationen ist es hilfreich, mehrere einzelne Zeichnungsobjekte zu einem großen Einzelobjekt zusammenzufassen. Im folgenden Beispiel werden zwei Zeichnungsobjekte zusammengefasst: 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
' Rechteckiges Zeichnungselement Square erstellen
Square = Doc.createInstance("com.sun.star.drawing.RectangleShape")
Square.Size = Size
Square.Position = Point
Square.FillColor = RGB(255,128,128)
Page.add(Square)
' Kreisförmiges Zeichnungselement Circle erstellen
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)
' Zeichnungselemente Square und Circlezusammenfassen
Shapes = createUnoService("com.sun.star.drawing.ShapeCollection")
Shapes.add(Square)
Shapes.add(Circle)
Group = Page.group(Shapes)
' Zusammengefasste Zeichnungselemente zentrieren
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
Dieser Code erstellt ein Rechteck und einen Kreis und fügt beide in eine Seite ein. Danach wird ein Objekt erstellt, das den Dienst com.sun.star.drawing.ShapeCollection unterstützt und die Add-Methode verwendet, um das Rechteck und den Kreis diesem Objekt hinzuzufügen. Die ShapeCollection wird der Seite mit der Group-Methode hinzugefügt und gibt das eigentliche Group-Objekt zurück, das wie ein einzelnes Shape bearbeitet werden kann. Wenn die einzelnen Objekte einer Gruppe formatiert werden sollen, wenden Sie die Formatierung vor dem Hinzufügen zur Gruppe an. Objekte, die sich in der Gruppe befinden, können nicht mehr geändert werden. Drehen und Scheren von ZeichnungsobjektenAlle in den vorangehenden Abschnitten beschriebenen Zeichnungsobjekte können mit dem Dienst com.sun.star.drawing.RotationDescriptor auch gedreht und geschert werden. Der Dienst stellt folgende Eigenschaften zur Verfügung: Das folgende Beispiel erstellt ein Rechteck und dreht es über die Eigenschaft RotateAngle um 30°. 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)
Das nächste Beispiel erstellt dasselbe Rechteck wie in dem vorherigen Beispiel, schert es aber stattdessen über die Eigenschaft ShearAngle um 30°. 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)
Suchen und ErsetzenZeichnungsdokumente bieten ähnlich wie Textdokumente eine Funktion zum Suchen und Ersetzen. Diese Funktion ist der in Textdokumenten verwendeten sehr ähnlich. Eine Beschreibung finden Sie in Kapitel 6, Textdokumente. In Zeichnungsobjekten werden die Deskriptor-Objekte zum Suchen und Ersetzen jedoch nicht direkt über das Dokumentobjekt, sondern über die verknüpfte Zeichenebene erzeugt. Das folgende Beispiel verdeutlicht einen Ersetzungsvorgang innerhalb einer Zeichnung: Dim Doc As Object Dim Page As Object Dim ReplaceDescriptor As Object Dim I As Integer Doc = StarDesktop.CurrentComponent Page = Doc.drawPages(0) ReplaceDescriptor = Page.createReplaceDescriptor() ReplaceDescriptor.SearchString = "is" ReplaceDescriptor.ReplaceString = "was" For I = 0 to Doc.drawPages.Count - 1 Page = Doc.drawPages(I) Page.ReplaceAll(ReplaceDescriptor) Next I Dieser Code erzeugt zuerst über die erste DrawPage des Dokuments einen ReplaceDescriptor und wendet diesen anschließend in einer Schleife auf alle in dem Zeichnungsdokument enthaltenen Seiten an. PräsentationenStarOffice-Präsentationen basieren auf Zeichnungsdokumenten. Jede Seite einer Präsentation ist eine Folie. Der Zugriff auf Folien erfolgt wie bei einer Standardzeichnung über die Liste DrawPages des Dokumentobjekts. Der für Präsentationsdokumente zuständige Dienst com.sun.star.presentation.PresentationDocument stellt dazu auch den vollständigen Dienst com.sun.star.drawing.DrawingDocument zur Verfügung. Arbeiten mit PräsentationenÜber die Zeichnungsfunktionen der Eigenschaft Presentation hinaus verfügt das Präsentationsdokument über ein Präsentationsobjekt, das Zugriff auf die Haupteigenschaften und Steuerungsmechanismen für Präsentationen gewährt. Dieses Objekt bietet beispielsweise eine Methode start, die zum Starten von Präsentationen dient. Dim Doc As Object Dim Presentation As Object Doc = StarDesktop.CurrentComponent Presentation = Doc.Presentation Presentation.start() Der Beispielcode erstellt ein Doc-Objekt, das auf das aktuelle Präsentationsdokument verweist, und ermittelt das verknüpfte Präsentationsobjekt. Mit der Methode start() des Objekts wird das Beispiel anschließend gestartet und die Bildschirmpräsentation vorgeführt. Das Präsentationsobjekt hält folgende Methoden bereit: Darüber hinaus stehen folgende Eigenschaften zur Verfügung:
|