Creare un file PS con le risorse del Componente gb.cairo
Vai alla navigazione
Vai alla ricerca
Il Componente di Gambas gb.cairo consente, fra l'altro, di creare file PS disegnandovi figure, testo, immagini ed in generale ogni altro elemento di disegno.
E' necessario impostare innanzitutto la superficie grafica di tipo PS, sulla quale disegnare; quindi iniziare il disegno con la Classe Cairo.
Mostriamo di seguito un semplice esempio:
Public Sub Button1_Click()
Dim ps As CairoPsSurface
Dim x, y As Integer
Dim im, im2 As Image
' Specifica la superficie grafica da creare per disegnarvi sopra.
' Per la creazione di un file PS, va passato al 1° argomento il percorso ove il file PS sarà salvato.
' (il 2° e il 3° argomento sono espressi in millimetri).
ps = New CairoPsSurface("/percorso/del/file/PS/da/creare", 210.0, 297.0)
' Inizia il disegno sulla superficie impostata:
Cairo.Begin(ps)
' Disegna un arco:
Cairo.LineWidth = 10.0
Cairo.Arc(300, 300, 100.0, 45.0 * (Pi / 180.0), 180.0 * (Pi / 180.0))
Cairo.Source = Cairo.ColorPattern(Color.Blue) ' Imposta il colore dell'elemento del disegno
Cairo.Stroke
' Disegna un arco colorato pieno:
Cairo.LineWidth = 10.0
Cairo.ArcNegative(400, 300, 100.0, 45.0 * (Pi / 180.0), 180.0 * (Pi / 180.0))
Cairo.Source = Cairo.ColorPattern(Color.Orange)
Cairo.Fill
' Scrive il testo:
Cairo.Font.Size = 20
Cairo.Font.Name = "URW Palladio L"
Cairo.Source = Cairo.ColorPattern(Color.Red)
Cairo.MoveTo(100, 200)
Cairo.DrawText("Drawtext")
Cairo.Fill
Cairo.Source = Cairo.ColorPattern(Color.Green)
Cairo.MoveTo(400, 300)
Cairo.Text("Text")
Cairo.Fill
' Disegna 10x10 quadrati pieni:
For x = 0 To 9
For y = 0 To 9
Cairo.Rectangle(200 + x * 10.0, 500 + y * 10.0, 5, 5)
Next
Next
Cairo.Source = Cairo.ColorPattern(Color.Violet)
Cairo.Fill
' Vengono inserite due immagini caricate da due file SVG:
im = Image.Load("/usr/share/icons/breeze-dark/devices/64/battery.svg")
im2 = Image.Load("/usr/share/icons/breeze-dark/devices/64/media-optical-video.svg")
' Disegna la prima immagine sulla superficie PS
Cairo.Source = Cairo.ImagePattern(im, 350, 600)
Cairo.Paint
' Disegna la seconda immagine sulla superficie PS
Cairo.Source = Cairo.ImagePattern(im2, 60, 400)
Cairo.Paint
' Termina il disegno:
Cairo.End
' Per generare il file PS, va utilizzato il Metodo ".Finish()":
ps.Finish()
End
Inserire in un file PS un Oggetto grafico presente sul Form
In quest'altro esempio si creerà un file PS ponendovi una "GridView", presente sul "Form", con il testo contenuto nelle sue celle.
E' necessario attivare anche il Componente "gb.desktop.x11".
Public Sub Form_Open()
Dim r, c As Byte
With GridView1
.Rows.Count = 5
.Columns.Count = 5
End With
For r = 0 To 4
For c = 0 To 4
GridView1[r, c].Text = "abcde"
Next
Next
End
Public Sub Button1_Click()
Dim dw As DesktopWindow
Dim ps As CairoPsSurface
Dim im As Image
' Individua la "finestra" della "GridView" dal suo identificativo:
With dw = New DesktopWindow(GridView1.Handle)
' Cattura l'immagine della "GridView":
im = .GetScreenshot(True).Image
End With
' Imposta la superficie di disegno del futuro file PS.
' Il primo argomento imposta il percorso ove sarà salvato il futuro file PS.
' Il secondo e il terzo argomento dimensionano in "millimetri" il futuro file PS.
ps = New CairoPsSurface("/percorso/del/file/PS/da/creare", 210.0, 297.0)
With Cairo
.Begin(ps)
.Source = Cairo.ImagePattern(im, 100, 100)
.Paint
.End
End With
ps.Finish()
End