Stampare un Controllo grafico posto sul Form: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| Riga 2: | Riga 2: | ||
==Stampare un Controllo grafico mediante le risorse dei Componenti "gb.desktop" e "gb.desktop.x11"== | ==Stampare un Controllo grafico mediante le risorse dei Componenti "gb.desktop" e "gb.desktop.x11"== | ||
Per stampare un Controllo grafico, usando le risorse dei Componenti "gb.desktop" e "gb.desktop.x11", è necessario individuare dunque il numero identificativo di tale Controllo, ossia della sua finestra, e passarlo alla Classe "DesktopWindow" del Componente "gb.desktop.x11". | |||
Mostriamo un esempio pratico commentato, nel quale sul Form principale è posta una "GridView" che sarà dunque stampata. | Mostriamo un esempio pratico commentato, nel quale sul Form principale è posta una "GridView" che sarà dunque stampata. | ||
Versione delle 11:37, 13 mag 2023
Ogni Controllo (Oggetto) grafico, posto sul Form, è in definitiva una finestra inglobata nel Form medesimo.
Stampare un Controllo grafico mediante le risorse dei Componenti "gb.desktop" e "gb.desktop.x11"
Per stampare un Controllo grafico, usando le risorse dei Componenti "gb.desktop" e "gb.desktop.x11", è necessario individuare dunque il numero identificativo di tale Controllo, ossia della sua finestra, e passarlo alla Classe "DesktopWindow" del Componente "gb.desktop.x11".
Mostriamo un esempio pratico commentato, nel quale sul Form principale è posta una "GridView" che sarà dunque stampata.
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()
With Printer1
.Paper = .A4
.Resolution = Desktop.Resolution
.Print
End With
End
Public Sub Printer1_Draw()
Dim dw As DesktopWindow
Dim im As Image
' Individua la "finestra della "GridView" mediante il suo identificatore:
With dw = New DesktopWindow(GridView1.Handle)
' Cattura l'immagine della "GridView":
im = .GetScreenshot(True).Image
End With
With Paint
.DrawImage(im, GridView1.X, GridView1.Y, GridView1.W, GridView1.H, 1.0, Null)
.Fill
.End
End With
End
Stampare un Controllo grafico mediante le risorse del Componente "gb.media"
Stampiamo, come sopra, una GridView e il suo contenuto mediante le risorse del Componente "gb.media":
Private appoggio As String
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 pl As MediaPipeline
Dim src, vdc, enc, snk As MediaControl
appoggio = Temp
pl = New MediaPipeline
src = New MediaControl(pl, "ximagesrc")
' Assegna alla proprietà "xid" del plugin "ximagesrc" il numero idetificativo della "GridView", affinché ne catturi quanto da essa visualizzato:
src["xid"] = GridView1.Id
vdc = New MediaControl(pl, "videoconvert")
enc = New MediaControl(pl, "pngenc")
snk = New MediaControl(pl, "filesink")
snk["location"] = appoggio
src.LinkTo(vdc)
vdc.LinkTo(enc)
enc.LinkTo(snk)
pl.Play()
' Attende sino a quando il file immagine PNG non è stato creato:
Repeat
Wait 0.01
Until Right(File.Load(appoggio), SizeOf(gb.Integer)) = MkInt(&826042AE)
pl.Stop()
pl.Close()
Print "Cattura immagine effettuata"
With Printer1
.Configure
.Orientation = .Portrait
.Paper = .A4
.Resolution = Desktop.Resolution
.GrayScale = False
' Volendo, si può stampare/creare un file .pdf, anziché stampare su foglio con la stampante, inserendo questa riga di comando:
.OutputFile = "/tmp/file.pdf"
.Print
End With
End
Public Sub Printer1_Draw()
With Paint
.DrawImage(Image.Load(appoggio), 0, 0)
.End
End With
End