Differenze tra le versioni di "Stampare un Controllo grafico posto sul Form"
Da Gambas-it.org - Wikipedia.
(Creata pagina con "Ogni Controllo (Oggetto) grafico, posto sul Form, è in definitiva una finestra inglobata nel Form medesimo. <BR>Per stampare un Controllo grafico, è necessario individuare d...") |
|||
(9 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
− | Ogni Controllo (Oggetto) grafico, posto sul Form, è in definitiva una finestra inglobata nel Form medesimo. | + | Ogni ''Controllo'' (Oggetto) grafico, posto sul ''Form'', è in definitiva una finestra inglobata nel ''Form'' medesimo. <SUP>[[[#Note|nota 1]]]</sup> |
− | < | ||
− | Mostriamo un esempio pratico commentato, nel quale sul Form principale è posta una | + | ==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 | Dim r, c As Byte | ||
Riga 19: | Riga 20: | ||
Next | Next | ||
− | + | End | |
+ | |||
− | ''' | + | Public Sub Button1_Click() |
+ | |||
+ | With Printer1 | ||
+ | .Paper = .A4 | ||
+ | .Resolution = Desktop.Resolution | ||
+ | <FONT Color=gray>' ''Se si desidera creare un file pdf:''</font> | ||
+ | .OutputFile = "/tmp/stampa.pdf" | ||
+ | .Print | ||
+ | End With | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | Public Sub Printer1_Draw() | ||
Dim dw As DesktopWindow | Dim dw As DesktopWindow | ||
Dim im As Image | Dim im As Image | ||
− | + | ||
− | <FONT Color=gray>' ''Individua la "finestra della "GridView" mediante il | + | <FONT Color=gray>' ''Individua la "finestra della "GridView" mediante il suo identificatore:''</font> |
With dw = New DesktopWindow(GridView1.Handle) | With dw = New DesktopWindow(GridView1.Handle) | ||
<FONT Color=gray>' ''Cattura l'immagine della "GridView":''</font> | <FONT Color=gray>' ''Cattura l'immagine della "GridView":''</font> | ||
Riga 32: | Riga 47: | ||
End With | 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 temporaneo 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 | ||
+ | |||
+ | temporaneo = Temp | ||
+ | |||
+ | pl = New MediaPipeline | ||
+ | |||
+ | src = New MediaControl(pl, "ximagesrc") | ||
+ | <FONT Color=gray>' ''Assegna alla proprietà "xid" del plugin "ximagesrc" il numero idetificativo della "GridView", affinché catturi quanto da essa visualizzato:''</font> | ||
+ | src["xid"] = GridView1.Id | ||
+ | vdc = New MediaControl(pl, "videoconvert") | ||
+ | enc = New MediaControl(pl, "pngenc") | ||
+ | snk = New MediaControl(pl, "filesink") | ||
+ | snk["location"] = temporaneo | ||
+ | |||
+ | src.LinkTo(vdc) | ||
+ | vdc.LinkTo(enc) | ||
+ | enc.LinkTo(snk) | ||
+ | |||
+ | pl.Play() | ||
+ | |||
+ | <FONT Color=gray>' ''Attende sino a quando il file immagine PNG non è stato creato:''</font> | ||
+ | Repeat | ||
+ | Wait 0.01 | ||
+ | Until Right(File.Load(temporaneo), SizeOf(gb.Integer)) = MkInt(&826042AE) | ||
+ | |||
+ | pl.Stop() | ||
+ | pl.Close() | ||
+ | |||
+ | Print "Cattura immagine effettuata" | ||
+ | |||
With Printer1 | With Printer1 | ||
− | .OutputFile = "/tmp/ | + | .Configure |
+ | .Orientation = .Portrait | ||
+ | .Paper = .A4 | ||
+ | .Resolution = Desktop.Resolution | ||
+ | .GrayScale = False | ||
+ | <FONT Color=gray>' ''Volendo, si può stampare/creare un file .pdf, anziché stampare su foglio con la stampante, inserendo questa riga di comando:'' | ||
+ | '''.OutputFile = "/tmp/file.pdf"'''</font> | ||
.Print | .Print | ||
End With | End With | ||
− | + | ||
− | + | End | |
+ | |||
+ | Public Sub Printer1_Draw() | ||
+ | |||
+ | With Paint | ||
+ | .DrawImage(Image.Load(temporaneo), 0, 0) | ||
+ | .End | ||
+ | End With | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | |||
+ | =Note= | ||
+ | [1] Vedere anche la seguente pagina: [[Stampare il testo presente in oggetti di testo]] |
Versione attuale delle 02:30, 15 set 2023
Ogni Controllo (Oggetto) grafico, posto sul Form, è in definitiva una finestra inglobata nel Form medesimo. [nota 1]
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 ' Se si desidera creare un file pdf: .OutputFile = "/tmp/stampa.pdf" .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 temporaneo 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 temporaneo = Temp pl = New MediaPipeline src = New MediaControl(pl, "ximagesrc") ' Assegna alla proprietà "xid" del plugin "ximagesrc" il numero idetificativo della "GridView", affinché 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"] = temporaneo 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(temporaneo), 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(temporaneo), 0, 0) .End End With End
Note
[1] Vedere anche la seguente pagina: Stampare il testo presente in oggetti di testo