Differenze tra le versioni di "Stampare un Controllo grafico posto sul Form"

Da Gambas-it.org - Wikipedia.
 
(2 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>&#091;[[#Note|nota 1]]&#093;</sup>
  
==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".
+
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.
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
    
 
    
 
   Dim r, c As Byte
 
   Dim r, c As Byte
Riga 20: Riga 20:
 
   Next
 
   Next
 
   
 
   
  '''End'''
+
  End
 +
 
   
 
   
  '''Public''' Sub Button1_Click()
+
  Public Sub Button1_Click()
 
    
 
    
 
   With Printer1
 
   With Printer1
 
     .Paper = .A4
 
     .Paper = .A4
 
     .Resolution = Desktop.Resolution
 
     .Resolution = Desktop.Resolution
 +
<FONT Color=gray>' ''Se si desidera creare un file pdf:''</font>
 +
    .OutputFile = "/tmp/stampa.pdf"
 
     .Print
 
     .Print
 
   End With
 
   End With
 
    
 
    
  '''End'''
+
  End
 
   
 
   
  '''Public''' Sub Printer1_Draw()
+
   
 +
Public Sub Printer1_Draw()
 
    
 
    
 
   Dim dw As DesktopWindow
 
   Dim dw As DesktopWindow
Riga 49: Riga 53:
 
   End With
 
   End With
 
    
 
    
  '''End'''
+
  End
  
  
==Stampare un Controllo grafico mediante le risorse del Componente "gb.media"==
+
==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":
+
Stampiamo, come sopra, una ''GridView'' e il suo contenuto mediante le risorse del Componente ''gb.media'':
  Private appoggio As String
+
  Private temporaneo As String
 
   
 
   
 
   
 
   
Riga 79: Riga 83:
 
   Dim src, vdc, enc, snk As MediaControl
 
   Dim src, vdc, enc, snk As MediaControl
 
   
 
   
   appoggio = Temp
+
   temporaneo = Temp
 
   
 
   
 
   pl = New MediaPipeline  
 
   pl = New MediaPipeline  
Riga 89: Riga 93:
 
   enc = New MediaControl(pl, "pngenc")
 
   enc = New MediaControl(pl, "pngenc")
 
   snk = New MediaControl(pl, "filesink")
 
   snk = New MediaControl(pl, "filesink")
   snk["location"] = appoggio
+
   snk["location"] = temporaneo
 
    
 
    
 
   src.LinkTo(vdc)
 
   src.LinkTo(vdc)
Riga 100: Riga 104:
 
   Repeat  
 
   Repeat  
 
     Wait 0.01
 
     Wait 0.01
   Until Right(File.Load(appoggio), SizeOf(gb.Integer)) = MkInt(&826042AE)
+
   Until Right(File.Load(temporaneo), SizeOf(gb.Integer)) = MkInt(&826042AE)
 
   
 
   
 
   pl.Stop()
 
   pl.Stop()
Riga 123: Riga 127:
 
   
 
   
 
   With Paint
 
   With Paint
     .DrawImage(Image.Load(appoggio), 0, 0)
+
     .DrawImage(Image.Load(temporaneo), 0, 0)
 
     .End
 
     .End
 
   End With
 
   End With
 
   
 
   
 
  End
 
  End
 +
 +
 +
 +
=Note=
 +
[1] Vedere anche la seguente pagina: [[Stampare il testo presente in oggetti di testo]]

Versione attuale delle 01: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