Differenze tra le versioni di "Stampare il contenuto di una DrawingArea"

Da Gambas-it.org - Wikipedia.
Riga 60: Riga 60:
 
   Me.Center
 
   Me.Center
 
    
 
    
   DrawingArea1.Resize(1653, 2338)  <FONTcolor=gray>' ''Dimensioni in pixel di un foglio A4 a 200 DPI''</font>
+
   DrawingArea1.Resize(1653, 2338)  <FONT color=gray>' ''Dimensioni in pixel di un foglio A4 a 200 DPI''</font>
 
    
 
    
 
  '''End'''
 
  '''End'''
Riga 83: Riga 83:
 
    
 
    
 
   
 
   
  <FONTcolor=gray>' ''Calcolo risolutore per linee e quadrati:''</font>
+
  <FONT color=gray>' ''Calcolo risolutore per linee e quadrati:''</font>
 
   dx = DrawingArea1.W / 211
 
   dx = DrawingArea1.W / 211
 
   dy = DrawingArea1.H / 297
 
   dy = DrawingArea1.H / 297
 
   
 
   
 
    
 
    
   X = 20 * dx  <FONTcolor=gray>' ''bordo di 20 mm''</font>
+
   X = 20 * dx  <FONT color=gray>' ''bordo di 20 mm''</font>
   Y = 20 * dy  <FONTcolor=gray>' ''bordo di 20 mm''</font>
+
   Y = 20 * dy  <FONT color=gray>' ''bordo di 20 mm''</font>
 
   
 
   
 
   Paint.Font.Name = "Ubuntu"
 
   Paint.Font.Name = "Ubuntu"
Riga 97: Riga 97:
 
   Paint.drawText("Testo Qualsiasi", X, y + Paint.Font.TextHeight("Testo Qualsiasi"))
 
   Paint.drawText("Testo Qualsiasi", X, y + Paint.Font.TextHeight("Testo Qualsiasi"))
 
   
 
   
  <FONTcolor=gray>' ''Disegnamo un rettangolo intorno al testo,''
+
  <FONT color=gray>' ''Disegnamo un rettangolo intorno al testo,''
 
  ' ''per verificare la corrispondenza delle dimensioni del testo mostrato sullo schermo''
 
  ' ''per verificare la corrispondenza delle dimensioni del testo mostrato sullo schermo''
 
  ' ''all'interno della "DrawingArea" e le dimensioni del testo stampato:''</font>
 
  ' ''all'interno della "DrawingArea" e le dimensioni del testo stampato:''</font>
Riga 127: Riga 127:
 
     .PaperHeight = 297
 
     .PaperHeight = 297
 
     .PaperWidth = 211
 
     .PaperWidth = 211
     <FONT color=gray>'''.OutputFile = "/tmp/file.pdf"'''  ' ''Se si vuole una stampa su file .PDF, attivare anche questa riga''</font>
+
     <FONT color=gray>' '''.OutputFile = "/tmp/file.pdf"'''  ''Se si vuole una stampa su file .PDF, attivare anche questa riga''</font>
 
     .Print
 
     .Print
 
   End With
 
   End With

Versione delle 09:37, 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)   ' 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
 

' Calcolo risolutore per linee e quadrati:
  dx = DrawingArea1.W / 211
  dy = DrawingArea1.H / 297

 
  X = 20 * dx   ' bordo di 20 mm
  Y = 20 * dy   ' bordo di 20 mm

  Paint.Font.Name = "Ubuntu"

  Paint.Font.Size = RIDIMENSIONA(11)

  Paint.drawText("Testo Qualsiasi", X, y + Paint.Font.TextHeight("Testo Qualsiasi"))

' 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 anche 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