Struttura dei disegni
- Struttura dei disegni
- Modifica degli oggetti di disegno
- Presentazioni
Apache OpenOffice non limita il numero delle pagine di un documento disegno. Inoltre, è possibile progettare ogni pagina separatamente e non esistono limiti al numero degli elementi del disegno aggiungibili a una pagina.
Contents
Pagine
Le pagine di un disegno sono disponibili tramite l'elenco DrawPages. È possibile accedere alle singole pagine sia attraverso il numero che attraverso il nome. Se un documento ha una pagina denominata Slide 1, gli esempi seguenti sono identici.
Esempio 1:
Dim Doc As Object Dim Page As Object Doc = StarDesktop.CurrentComponent Page = Doc.drawPages(0)
Esempio 2:
Dim Doc As Object Dim Page As Object Doc = StarDesktop.CurrentComponent Page = Doc.drawPages.getByName("Slide 1")
Nell'esempio 1, la pagina è identificata dal suo numero (il conteggio inizia a 0). Nel secondo esempio, si accede alla pagina utilizzando il suo nome e il metodo 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
La chiamata precedente restituisce un oggetto pagina che supporta il servizio com.sun.star.drawing.DrawPage. Questo servizio riconosce le proprietà seguenti:
- BorderLeft (Long)
- Bordo sinistro in centesimi di millimetro
- BorderRight (Long)
- Bordo destro in centesimi di millimetro
- BorderTop (Long)
- Bordo superiore in centesimi di millimetro
- BorderBottom (Long)
- Bordo inferiore in centesimi di millimetro
- Width (Long)
- Larghezza della pagina in centesimi di millimetro
- Height (Long)
- Altezza della pagina in centesimi di millimetro
- Number (Short)
- Numero di pagine (la numerazione inizia con 1), sola lettura
- Orientation (Enum)
- Orientamento della pagina (conforme all'enumerazione com.sun.star.view.PaperOrientation)
La modifica di queste impostazioni incide su tutte le pagine del documento.
L'esempio seguente imposta il formato della pagina di un disegno appena aperto su 20 x 20 centimetri con un margine della pagina di 0,5 centimetri:
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
Proprietà elementari degli oggetti di disegno
Gli oggetti disegno includono forme (rettangoli, cerchi e così via), linee e oggetti testo, che condividono una serie di funzioni comuni e supportano il servizio com.sun.star.drawing.Shape. Questo servizio definisce le proprietà Size e Position di un oggetto di disegno.
Apache OpenOffice Basic offre inoltre diversi altri servizi tramite i quali modificare tali proprietà, come la formattazione o l'applicazione di riempimenti. Le opzioni di formattazione disponibili dipendono dal tipo di oggetto disegno.
L'esempio seguente crea e inserisce un rettangolo nel disegno:
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)
Questo esempio utilizza la chiamata StarDesktop.CurrentComponent per determinare quale documento è aperto. L'oggetto documento così determinato restituisce la prima pagina del disegno tramite la chiamata drawPages(0).
Vengono quindi inizializzate le strutture Point e Size con il punto di origine (angolo sinistro) e il formato dell'oggetto disegno. Le lunghezze sono specificate in centesimi di millimetro.
Il codice del programma utilizza quindi la chiamata Doc.createInstance per creare l'oggetto disegno rettangolo come specificato dal servizio com.sun.star.drawing.RectangleShape. Al termine, l'oggetto disegno è assegnato a una pagina utilizzando una chiamata Page.add.
Proprietà di riempimento
Questa sezione descrive quattro servizi e in ciascun caso il codice del programma di esempio utilizza un elemento di forma rettangolare che combina diversi tipi di formattazione. Le proprietà di riempimento vengono combinate nel servizio com.sun.star.drawing.FillProperties.
Apache OpenOffice riconosce quattro tipi principali di formattazione per un'area di riempimento. La variante più semplice è il riempimento a colore singolo. Le opzioni per definire le sfumature di colore e i tratteggi permettono di creare e introdurre altri colori. La quarta variante è l'opzione che consente di proiettare immagini preesistenti nell'area di riempimento.
Il modo riempimento di un oggetto disegno viene definito tramite la proprietà FillStyle. I valori consentiti sono definiti in com.sun.star.drawing.FillStyle.
Riempimenti a colore singolo
La proprietà principale per i riempimenti a colore singolo è la seguente:
- FillColor (Long)
- Colore di riempimento di un'area.
Per utilizzare il modo riempimento, dovete impostare la proprietà FillStyle sul SOLIDmodo di riempimento.
L'esempio seguente crea una forma rettangolare e un riempimento rosso (valore RGB 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)
Sfumatura di colore
Se si imposta la proprietà FillStyle su GRADIENT è possibile applicare una sfumatura di colore a qualsiasi area di riempimento di un documento Apache OpenOffice.
Per applicare una sfumatura di colore predefinita, è possibile assegnare il nome associato della proprietà FillTransparenceGradientName. Per definire una sfumatura di colore personalizzata, dovete completare una struttura com.sun.star.awt.Gradient per assegnare la proprietà FillGradient, che dispone delle opzioni seguenti:
- Style (Enum)
- Tipo di sfumatura, ad esempio, lineare o radiale (valori predefiniti conformi a com.sun.star.awt.GradientStyle)
- StartColor (Long)
- Colore iniziale di una sfumatura di colore
- EndColor (Long)
- Colore finale di una sfumatura di colore
- Angle (Short)
- Angolo della sfumatura di colore in decimi di grado
- XOffset (Short)
- Coordinata X in corrispondenza della quale inizia la sfumatura di colore, specificata in centesimi di millimetro
- YOffset (Short)
- Coordinata Y in corrispondenza della quale inizia la sfumatura di colore, specificata in centesimi di millimetro
- StartIntensity (Short)
- Intensità di StartColor come percentuale (in Apache OpenOffice Basic, si possono specificare anche valori superiori al 100 percento)
- EndIntensity (Short)
- Intensità di EndColor come percentuale (in Apache OpenOffice Basic, si possono specificare anche valori superiori al 100 percento)
- StepCount (Short)
- Numero di gradazioni di colore che Apache OpenOffice deve calcolare per le sfumature
L'esempio seguente dimostra l'uso delle sfumature di colore con l'ausilio della struttura 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)
Questo esempio crea una sfumatura di colore lineare (Style = LINEAR). La sfumatura inizia con il rosso (StartColor) nell'angolo superiore sinistro e si estende a un angolo di 45 gradi (Angle) fino al verde (EndColor) nell'angolo inferiore destro. L’intensità di colore dei colori iniziale e finale è 150 percento (StartIntensity e EndIntensity) pertanto i colori risultano più brillanti rispetto ai valori specificati nelle proprietà StartColor e EndColor. La sfumatura di colore è rappresentata utilizzando un centinaio di singoli colori sfumati (StepCount).
Tratteggi
Per creare un riempimento tratteggiato, la proprietà FillStyle deve essere impostata su HATCH. Il codice del programma per definire il tratteggio è molto simile al codice per le sfumature di colore. Anche in questo caso una struttura ausiliaria, com.sun.star.drawing.Hatch, è utilizzata per definire l'aspetto dei tratteggi. La struttura dei tratteggi ha le seguenti proprietà:
- Style (Enum)
- Tipo di tratteggio: semplice, squadrato, o squadrato con diagonali (valori predefiniti conformi a com.sun.star.awt.HatchStyle)
- Color (Long)
- Colore delle linee
- Distance (Long)
- Distanza tra le linee, espressa in centesimi di millimetro
- Angle (Short)
- Angolo del tratteggio in decimi di grado
L'esempio seguente dimostra l'uso di una struttura di tratteggio:
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)
Questo codice crea una struttura di tratteggio semplice (HatchStyle = SINGLE) le cui linee sono ruotate di 45 gradi (Angle). Le linee sono grigio scuro (Color) e sono distanziate di 0,2 millimetri (Distance).
Bitmap
Per utilizzare la proiezione bitmap come riempimento, impostate la proprietà FillStyle su BITMAP. Se la bitmap è già disponibile in Apache OpenOffice, è sufficiente specificarne il nome nella proprietà FillBitMapName e il modello di visualizzazione (semplice, affiancata, o allungata) nella proprietà FillBitmapMode (valori predefiniti conformi a com.sun.star.drawing.BitmapMode).
Per utilizzare un file bitmap esterno, specificatene l'URL nella proprietà FillBitmapURL.
L'esempio seguente crea una rettangolo e affianca la bitmap Sky disponibile in Apache OpenOffice per riempire l'area del rettangolo:
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)
Trasparenza
È possibile regolare la trasparenza di qualsiasi riempimento applicato. Il modo più semplice di modificare la trasparenza di un elemento di disegno è rappresentato dall'utilizzo della proprietà FillTransparence.
L'esempio seguente crea un rettangolo rosso con una trasparenza del 50 percento.
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)
Per rendere trasparente il riempimento, impostare la proprietà FillTransparence su 100.
Oltre alla proprietà FillTransparence, il servizio com.sun.star.drawing.FillProperties fornisce anche la proprietà FillTransparenceGradient, la quale permette di definire una sfumatura che specifica la trasparenza dell'area di riempimento.
Proprietà delle linee
Tutti gli oggetti disegno che hanno un bordo supportano il servizio com.sun.star.drawing.LineStyle. Di seguito sono elencate alcune delle proprietà offerte da questo servizio:
- LineStyle (Enum)
- Tipo di linea (valori predefiniti conformi a com.sun.star.drawing.LineStyle)
- LineColor (Long)
- Colore della linea
- LineTransparence (Short)
- Trasparenza della linea
- LineWidth (Long)
- Spessore della linea espresso in centesimi di millimetro
- LineJoint (Enum)
- Transizioni ai punti di connessione (valori predefiniti conformi a com.sun.star.drawing.LineJoint)
L'esempio seguente crea un rettangolo con bordo pieno (LineStyle = SOLID) di 5 millimetri di spessore (LineWidth) e trasparente al 50 percento. I bordi destro e sinistro della linea si estendono ai loro punti di reciproca intersezione (LineJoint = MITER) per formare un angolo retto.
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)
Oltre alle proprietà elencate, il servizio com.sun.star.drawing.LineStyle fornisce opzioni per il disegno di linee punteggiate o tratteggiate. Per ulteriori informazioni, consultate il riferimento dell'API di Apache OpenOffice.
Proprietà del testo (oggetti di disegno)
I servizi com.sun.star.style.CharacterProperties e com.sun.star.style.ParagraphProperties formattano il testo negli oggetti di disegno. Questi servizi sono relativi ai singoli caratteri e paragrafi e sono descritti in maggior dettaglio in Documenti di testo.
L'esempio seguente inserisce il testo in un rettangolo e formatta il servizio dei caratteri com.sun.star.style.CharacterProperties.
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"
Questo codice utilizza la proprietà Stringdel rettangolo per inserire il testo e le proprietà CharWeight e CharFontName del servizio com.sun.star.style.CharacterProperties per formattare il carattere del testo.
Il testo può essere inserito solo una volta aggiunto l'oggetto di disegno alla pagina di disegno. Potete inoltre utilizzare il servizio com.sun.star.drawing.Text per posizionare e formattare il testo nell'oggetto di disegno. Di seguito sono riportate alcune delle proprietà più importanti di questo servizio:
- TextAutoGrowHeight (Boolean)
- Adatta l'altezza dell'elemento di disegno al testo che contiene
- TextAutoGrowWidth (Boolean)
- Adatta la larghezza dell'elemento di disegno al testo che contiene
- TextHorizontalAdjust (Enum)
- Posizione orizzontale del testo all'interno dell'elemento di disegno (valori predefiniti conformi a com.sun.star.drawing.TextHorizontalAdjust)
- TextVerticalAdjust (Enum)
- Posizione verticale del testo all'interno dell'elemento di disegno (valori predefiniti conformi a com.sun.star.drawing.TextVerticalAdjust)
- TextLeftDistance (Long)
- Distanza a sinistra tra l'elemento di disegno e il testo in centesimi di millimetro
- TextRightDistance (Long)
- Distanza a destra tra l'elemento di disegno e il testo in centesimi di millimetro
- TextUpperDistance (Long)
- Distanza superiore tra l'elemento di disegno e il testo in centesimi di millimetro
- TextLowerDistance (Long)
- Distanza inferiore tra l'elemento di disegno e il testo in centesimi di millimetro
L'esempio seguente dimostra l'uso delle proprietà citate.
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" ' May only take place after Page.add! 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
Questo codice inserisce un elemento di disegno in una pagina, quindi aggiunge il testo all'angolo superiore sinistro dell'oggetto disegno utilizzando le proprietà TextVerticalAdjust e TextHorizontalAdjust. La distanza minima tra il bordo del testo e l'oggetto disegno è impostata su tre millimetri.
Proprietà dell'ombra
È possibile aggiungere un'ombra alla maggior parte degli oggetti disegno con il servizio com.sun.star.drawing.ShadowProperties. Le proprietà di questo servizio sono:
- Shadow (Boolean)
- Attiva l'ombra
- ShadowColor (Long)
- Colore dell'ombra
- ShadowTransparence (Short)
- Trasparenza dell'ombra
- ShadowXDistance (Long)
- Distanza verticale dell'ombra dall'oggetto disegno in centesimi di millimetro
- ShadowYDistance (Long)
- Distanza orizzontale dell'ombra dall'oggetto disegno in centesimi di millimetro
L'esempio seguente crea una rettangolo con un'ombra scostata di 2 millimetri dal rettangolo in senso verticale e orizzontale. L'ombra è resa in grigio scuro con il 50 percento di trasparenza.
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)
Panoramica dei diversi oggetti di disegno
Forme rettangolari
Gli oggetti di forma rettangolare (com.sun.star.drawing.RectangleShape) supportano i seguenti servizi di formattazione:
- Fill properties
- com.sun.star.drawing.FillProperties
- Line properties
- com.sun.star.drawing.LineProperties
- Text properties
- com.sun.star.drawing.Text (con com.sun.star.style.CharacterProperties e com.sun.star.style.ParagraphProperties)
- Shadow properties
- com.sun.star.drawing.ShadowProperties
- CornerRadius (Long)
- Raggio per l'arrotondamento degli angoli espresso in centesimi di millimetro
Cerchi ed ellissi
Il servizio com.sun.star.drawing.EllipseShape è responsabile di cerchi ed ellissi e supporta i seguenti servizi:
- Fill properties
- com.sun.star.drawing.FillProperties
- Line properties
- com.sun.star.drawing.LineProperties
- Text properties
- com.sun.star.drawing.Text (con com.sun.star.style.CharacterProperties e com.sun.star.style.ParagraphProperties)
- Shadow properties
- com.sun.star.drawing.ShadowProperties
Oltre a questi servizi, cerchi ed ellissi offrono le seguenti proprietà:
- CircleKind (Enum)
- Tipo di cerchio o ellissi (valori predefiniti conformi a com.sun.star.drawing.CircleKind )
- CircleStartAngle (Long)
- Angolo iniziale in decimi di grado (solo per segmenti di cerchio o ellisse)
- CircleEndAngle (Long)
- Angolo finale in decimi di grado (solo per segmenti di cerchio o ellisse)
La proprietà CircleKind determina se un oggetto è un cerchio completo, una porzione circolare o una sezione di un cerchio. Sono disponibili i seguenti valori:
- com.sun.star.drawing.CircleKind.FULL
- Cerchio completo o ellisse completa
- com.sun.star.drawing.CircleKind.CUT
- Sezione di cerchio (cerchio parziale le cui interfacce sono collegate direttamente)
- com.sun.star.drawing.CircleKind.SECTION
- Porzione di cerchio
- com.sun.star.drawing.CircleKind.ARC
- Angolo (non comprendente la linea del cerchio)
L'esempio seguente crea una porzione circolare con un angolo di 70 gradi (prodotta dalla differenza tra l'angolo iniziale di 20 gradi e l'angolo finale di 90 gradi).
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)
Linee
Apache OpenOffice fornisce il servizio com.sun.star.drawing.LineShape per gli oggetti linea. Gli oggetti linea supportano tutti i servizi di formattazione generale ad eccezione delle aree. Di seguito sono riportate tutte le proprietà associate al servizio LineShape:
- Line properties
- com.sun.star.drawing.LineProperties
- Text properties
- com.sun.star.drawing.Text (con com.sun.star.style.CharacterProperties e com.sun.star.style.ParagraphProperties)
- Shadow properties
- com.sun.star.drawing.ShadowProperties
L'esempio seguente crea e formatta una linea con l'ausilio delle proprietà citate. L'origine della linea è specificata nella proprietà Location mentre le coordinate elencate nella proprietà Size specificano il punto finale della linea.
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)
Forme polipoligonali
Apache OpenOffice supporta anche forme poligonali complesse tramite il servizio com.sun.star.drawing.PolyPolygonShape. In senso stretto, un polipoligono non è un poligono semplice ma un poligono multiplo. È pertanto possibile specificare elenchi indipendenti contenenti punti angolari e combinarli per formare un oggetto completo.
Come per le forme rettangolari, tutte le proprietà di formattazione degli oggetti di disegno vengono fornite anche per i polipoligoni:
- Fill properties
- com.sun.star.drawing.FillProperties
- Line properties
- com.sun.star.drawing.LineProperties
- Text properties
- com.sun.star.drawing.Text (con com.sun.star.style.CharacterProperties e com.sun.star.style.ParagraphProperties)
- Shadow properties
- com.sun.star.drawing.ShadowProperties
Il servizio PolyPolygonShape dispone anche di una proprietà che permette di definire le coordinate di un poligono:
- PolyPolygon (Array): campo contenente le coordinate del poligono (doppia matrice con punti del tipocom.sun.star.awt.Point)
L'esempio seguente mostra come definire un triangolo con il servizio PolyPolygonShape.
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 must take place before the coordinates are set 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())
Dato che i punti di un poligono sono definiti come valori assoluti, non è necessario specificare le dimensioni o la posizione iniziale di un poligono. Al contrario, occorre creare una matrice dei punti, includere tale matrice in una seconda matrice (utilizzando la chiamata Array(Coordinates()), quindi assegnare tale matrice al poligono. Prima di effettuare la chiamata corrispondente, dovrete inserire il poligono nel documento.
La doppia matrice nella definizione permette di creare forme complesse mediante l'unione di diversi poligoni. Ad esempio, è possibile creare un rettangolo e quindi inserirne un altro al suo interno per creare un foro nel rettangolo originale:
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 must take place before the coordinates are set 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())
Per quanto riguarda quali aree sono riempite e quali sono vuote, Apache OpenOffice applica una regola semplice: il bordo della forma esterna corrisponde sempre al bordo esterno del polipoligono. La linea interna successiva costituisce il bordo interno della forma e marca la transizione al primo foro. Se è presente un'altra linea interna, quest'ultima contraddistingue la transizione a un'area riempita.
Immagini
Gli ultimi elementi di disegno qui presentati sono oggetti grafici basati sul servizio com.sun.star.drawing.GraphicObjectShape. Potrete utilizzarli con qualsiasi immagine in Apache OpenOffice e adattarne l'aspetto utilizzando un'intera gamma di proprietà.
Gli oggetti grafici supportano due delle proprietà generali di formattazione:
- Text properties
- com.sun.star.drawing.Text (con com.sun.star.style.CharacterProperties e com.sun.star.style.ParagraphProperties)
- Shadow properties
- com.sun.star.drawing.ShadowProperties
Le proprietà addizionali supportate dagli oggetti grafici sono le seguenti:
- GraphicURL (String)
- URL dell'immagine
- AdjustLuminance (Short)
- Luminanza dei colori, espressa come percentuale (sono ammessi anche i valori negativi)
- AdjustContrast (Short)
- Contrasto, espresso come percentuale (sono ammessi anche i valori negativi)
- AdjustRed (Short)
- Valore del rosso, espresso come percentuale (sono ammessi anche i valori negativi)
- AdjustGreen (Short)
- Valore del verde, espresso come percentuale (sono ammessi anche i valori negativi)
- AdjustBlue (Short)
- Valore del blu, espresso come percentuale (sono ammessi anche i valori negativi)
- Gamma (Short)
- Valore gamma di un'immagine
- Transparency (Short)
- Trasparenza di un'immagine, espressa come percentuale
- GraphicColorMode (enum)
- Modalità del colore, per esempio standard, scala di grigi, bianco e nero (valore predefinito conforme a com.sun.star.drawing.ColorMode )
L'esempio seguente mostra come inserire una pagina in un oggetto grafico 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 ' specifications, insignificant because latter coordinates are binding 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)
Questo codice inserisce l'immagine test.jpg e ne adatta l'aspetto utilizzando le proprietà Adjust. In questo esempio, le immagini sono raffigurate come trasparenti al 40 percento senza altre conversioni di colore (GraphicColorMode = STANDARD).
Content on this page is licensed under the Public Documentation License (PDL). |