Stampare il contenuto di una DrawingArea: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| Riga 4: | Riga 4: | ||
* viene richiamato l'evento ''_Draw()'' della Classe ''Printer'' per ogni pagina da stampare; | * viene richiamato l'evento ''_Draw()'' della Classe ''Printer'' per ogni pagina da stampare; | ||
* sia per disegnare nella ''DrawingArea'' sia per stamparea il disegno si richiama una sub-procedura, nella quale sono presenti i necessari valori ed impostazioni. | * sia per disegnare nella ''DrawingArea'' sia per stamparea il disegno si richiama una sub-procedura, nella quale sono presenti i necessari valori ed impostazioni. | ||
===Esempio generico=== | |||
'''Public''' Sub DrawingArea1_Draw() | '''Public''' Sub DrawingArea1_Draw() | ||
| Riga 49: | Riga 52: | ||
'''End''' | '''End''' | ||
==Stampare garantendo la corrispondenza fra testo mostrato sulla ''DrawingArea'' e testo stampato== | |||
Nel caso sia necessaria una precisa corrispondenza fra quanto mostrato sulla ''DrawingArea'' e quanto stampato, è possibile utilizzare il seguente codice esemplificativo: ||#Note|1|| | |||
'''Public''' Sub Form_Show() | |||
Me.Center | |||
DrawingArea1.Resize(1653, 2338) <FONTcolor=gray>' ''Dimensioni in pixel di un foglio A4 a 200 DPI''</font> | |||
'''End''' | |||
'''Public''' Sub DrawingArea1_Draw() | |||
Paint.Begin(DrawingArea1) | |||
disegna() | |||
Paint.End | |||
'''End''' | |||
'''Public''' Sub disegna() | |||
Dim X, Y As Float | |||
Dim dx, dy, DXT As Float | |||
Dim IH, IW As Float | |||
<FONTcolor=gray>' ''Calcolo risolutore per linee e quadrati:''</font> | |||
dx = DrawingArea1.W / 211 | |||
dy = DrawingArea1.H / 297 | |||
X = 20 * dx <FONTcolor=gray>' ''bordo di 20 mm''</font> | |||
Y = 20 * dy <FONTcolor=gray>' ''bordo di 20 mm''</font> | |||
Paint.Font.Name = "Ubuntu" | |||
Paint.Font.Size = RIDIMENSIONA(11) | |||
Paint.drawText("Testo Qualsiasi", X, y + Paint.Font.TextHeight("Testo Qualsiasi")) | |||
<FONTcolor=gray>' ''Disegnamo un rettangolo intorno al testo,'' | |||
' ''per verificare la corrispondenza delle dimensioni del testo mostrato sullo schermo'' | |||
' ''all'interno della "DrawingArea" e le dimensioni del testo stampato:''</font> | |||
Paint.Rectangle(X, Y, Paint.Font.TextWidth("Testo Qualsiasi"), Paint.Font.TextHeight("Testo Qualsiasi")) | |||
Paint.Stroke | |||
'''End''' | |||
'''Public''' Function RIDIMENSIONA(size As Integer) As Integer | |||
If Paint.Device = DrawingArea1 Then | |||
Return size * 2 | |||
Else | |||
Return size | |||
Endif | |||
'''End''' | |||
'''Public''' Sub Button2_Click() | |||
If Printer1.Configure() Then Return | |||
With Printer1 | |||
.FullPage = True | |||
.Orientation = 0 | |||
.Resolution = 200 | |||
.PaperHeight = 297 | |||
.PaperWidth = 211 | |||
<FONT color=gray>'''.OutputFile = "/tmp/file.pdf"''' ' ''Se si vuole una stampa su file .PDF, attivare questa riga''</font> | |||
.Print | |||
End With | |||
'''End''' | |||
'''Public''' Sub Printer1_Begin() | |||
disegna() | |||
'''End''' | |||
=Note= | |||
[1] Il codice è stato realizzato dall'utente [http://www.gambas-it.org/smf/index.php?action=profile;u=28 fsurfing] del forum di [http://www.gambas-it.org www.gambas-it.org] | |||
Versione delle 10:33, 2 feb 2014
Per stampare il contenuto grafico presente in una DrawingArea, si potrà attuare il seguente procedimento:
- si provvede a disegnare e scrivere all'interno della DrawingArea mediante l'evento _Draw();
- si imposta la fase di stampa con la Classe Printer;
- viene richiamato l'evento _Draw() della Classe Printer per ogni pagina da stampare;
- sia per disegnare nella DrawingArea sia per stamparea il disegno si richiama una sub-procedura, nella quale sono presenti i necessari valori ed impostazioni.
Esempio generico
Public Sub DrawingArea1_Draw()
' Richiamiamo ai fini del disegno sulla "DrawingArea" le impostazioni presenti nella sub-procedura":
DisegnoStampa()
End
Public Sub Button1_Click()
With Printer1
.Configure
.Orientation = 0
.Paper = 2
.Resolution = Desktop.Resolution
.GrayScale = False
' Volendo, si può stampare/creare un file .pdf o .ps, anziché stampare
' su foglio con la stampante, inserendo questa riga di comando:
' .OutputFile = "percorso_mio_file.pdf"
.Print
End With
End
Public Sub Printer1_Draw()
' Richiamiamo ai fini della stampa le impostazioni presenti nella sub-procedura":
DisegnoStampa()
End
Private Procedure DisegnoStampa()
With Paint
.Brush = Paint.Color(Color.Red)
.MoveTo(200, 200)
.RelLineTo(0, 100)
.Stroke
.DrawText("Testo qualsiasi", 10, 10, 20, 20)
.End
End With
End
Stampare garantendo la corrispondenza fra testo mostrato sulla DrawingArea e testo stampato
Nel caso sia necessaria una precisa corrispondenza fra quanto mostrato sulla DrawingArea e quanto stampato, è possibile utilizzare il seguente codice esemplificativo: ||#Note|1||
Public Sub Form_Show()
Me.Center
DrawingArea1.Resize(1653, 2338) <FONTcolor=gray>' Dimensioni in pixel di un foglio A4 a 200 DPI
End
Public Sub DrawingArea1_Draw()
Paint.Begin(DrawingArea1)
disegna()
Paint.End
End
Public Sub disegna()
Dim X, Y As Float
Dim dx, dy, DXT As Float
Dim IH, IW As Float
<FONTcolor=gray>' Calcolo risolutore per linee e quadrati:
dx = DrawingArea1.W / 211
dy = DrawingArea1.H / 297
X = 20 * dx <FONTcolor=gray>' bordo di 20 mm
Y = 20 * dy <FONTcolor=gray>' bordo di 20 mm
Paint.Font.Name = "Ubuntu"
Paint.Font.Size = RIDIMENSIONA(11)
Paint.drawText("Testo Qualsiasi", X, y + Paint.Font.TextHeight("Testo Qualsiasi"))
<FONTcolor=gray>' Disegnamo un rettangolo intorno al testo,
' per verificare la corrispondenza delle dimensioni del testo mostrato sullo schermo
' all'interno della "DrawingArea" e le dimensioni del testo stampato:
Paint.Rectangle(X, Y, Paint.Font.TextWidth("Testo Qualsiasi"), Paint.Font.TextHeight("Testo Qualsiasi"))
Paint.Stroke
End
Public Function RIDIMENSIONA(size As Integer) As Integer
If Paint.Device = DrawingArea1 Then
Return size * 2
Else
Return size
Endif
End
Public Sub Button2_Click()
If Printer1.Configure() Then Return
With Printer1
.FullPage = True
.Orientation = 0
.Resolution = 200
.PaperHeight = 297
.PaperWidth = 211
.OutputFile = "/tmp/file.pdf" ' Se si vuole una stampa su file .PDF, attivare questa riga
.Print
End With
End
Public Sub Printer1_Begin()
disegna()
End
Note
[1] Il codice è stato realizzato dall'utente fsurfing del forum di www.gambas-it.org