Creare file SVG con le risorse del Componente gb.cairo

Da Gambas-it.org - Wikipedia.
Versione del 7 giu 2023 alle 15:26 di Vuott (Discussione | contributi) (Creata pagina con "Il Componente di Gambas gb.cairo consente, fra l'altro, di creare file SVG disegnandovi figure, testo, immagini ed in generale ogni altro elemento di disegno. E' necessario i...")

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Il Componente di Gambas gb.cairo consente, fra l'altro, di creare file SVG disegnandovi figure, testo, immagini ed in generale ogni altro elemento di disegno.

E' necessario impostare innanzitutto una superficie grafica già fornita dal Componente gb.cairo, ad esempio quella per generare file SVG (CairoSvgSurface), sulla quale disegnare. Se si intende creare un file di tipo SVG si imposterà come primo parametro anche il percorso ove il nuovo file SVG verrà salvato. Si potrà quindi iniziare il disegno con la Classe Cairo.

Mostriamo di seguito un semplice esempio per disegnare e generare un file SVG. Poiché l'esempio prevede anche l'inserimento di due file immagine, si dovranno anche attivare i Componenti gb.image e gb.image.io .

Al termine verrà posto il metodo .Finish() della Classe CairoSvgSurface() .

 Public Sub Main()

 Dim svg As CairoSvgSurface
 Dim x, y As Integer
 Dim im, im2 As Image

' Specifica la superficie grafica da creare per disegnarvi sopra:
 svg = New CairoSvgSurface("/percorso/del/file.svg/da/creare", 210, 297)

 With Cairo
' Inizia il disegno sulla superficie impostata:
   .Begin(svg)
' Disegna un arco:
   .LineWidth = 10.0
   .Arc(300, 300, 100.0, 45.0 * (Pi / 180.0), 180.0 * (Pi / 180.0))
   .Source = Cairo.ColorPattern(Color.Blue)    ' Imposta il colore dell'elemento del disegno
   .Stroke
' Disegna un arco colorato pieno:
   .LineWidth = 10.0
   .ArcNegative(400, 300, 100.0, 45.0 * (Pi / 180.0), 180.0 * (Pi / 180.0))
   .Source = Cairo.ColorPattern(Color.Orange)
   .Fill   
' Scrive il testo:
   .Font.Size = 20
   .Font.Name = "URW Palladio L"
   .Source = .ColorPattern(Color.Red)
   .MoveTo(100, 200)
   .DrawText("Drawtext")
   .Fill
   .Source = Cairo.ColorPattern(Color.Green)
   .MoveTo(400, 300)
   .Text("Text")
   .Fill
' Disegna 10x10 quadrati pieni:
   For x = 0 To 9
     For y = 0 To 9
       .Rectangle(200 + x * 10.0, 500 + y * 10.0, 5, 5)
     Next
   Next
   .Source = .ColorPattern(Color.Violet)
   .Fill
' Vengono inserite due immagini caricate da due file PNG:
   im = Image.Load("/percorso/del/primo/file.png")
   im2 = Image.Load("/percorso/del/secondo/file.png")
   .Scale(1, 1)     ' Non imposta alcuna modifica scalare all'immagine
   .Source = Cairo.ImagePattern(im, 350, 600)
   .Paint           ' Imposta l'immagine sulla superficie SVG
   .Scale(0.5, 0.5) ' Riduce della metà la dimensione della seconda immagine da disegnare sulla superficie PDF
   .Source = Cairo.ImagePattern(im2, 400, 200)
   .Paint
' Termina il disegno:
   .End
 End With

 svg.Finish
 
End