[Gambas-user] About Printer

Demosthenes Koptsis demosthenesk at ...626...
Tue Jul 19 13:08:49 CEST 2011


i want to print a rectangle on a page.

i have this code:

----------------
' Gambas class file

Private Const PAPER_FACTOR As Float = 7.55

Public Sub btnPrint_Click()

  If prtPrinter.Configure() Then Return

  Me.Enabled = False
  Inc Application.Busy
  prtPrinter.Print
  Dec Application.Busy
  Me.Enabled = True

End

Public Sub prtPrinter_Draw()

  Dim X As Float
  Dim Y As Float
  Dim W As Float
  Dim H As Float
  Dim wFactor As Float
  Dim hFactor As Float
  
  txtArea.Text &= "Begin Draw\n"
  
  'Set scale
  wFactor = prtPrinter.PaperWidth / Paint.Width 
  hFactor = prtPrinter.PaperHeight / Paint.Height
  Paint.Scale(wFactor, hFactor)

  'Set Color to red
  Paint.Color(Color.RGB(255, 0, 0, 0))
  
  'Set X,Y margin to 0,0
  X = 0
  Y = 0

  'W points * 7.55 = W mm
  'W = 100 = 100 mm = 10 cm
  W = 200 * PAPER_FACTOR
  H = 100 * PAPER_FACTOR
  
  'Draw a rectangle
  Paint.Rectangle(X, Y, W, H)
  
  'Write it on paper
  Paint.Stroke
  
End

------------------

At the beginning i make a scale
Paint.Scale(wFactor, hFactor)

according to page
http://gambasdoc.org/help/howto/print?v3

to have absolute coordinates.

Problem #1
-----------
i want the rectangle to be printed at (x,y) = (0,0)
so i set

  'Set X,Y margin to 0,0
  X = 0
  Y = 0

But at the page it is printed 46 points inside and lower.
If i use
  X = -46
  Y = -46

i get the rectangle at the beginning of page, straight to border.

Problem #2
-----------
i want to set width to 100 millimeters. I found that i have to multiply
the number in millimeters with 7.55 so i use this as constant
PAPER_FACTOR

How really does this work? why this number?
 
Problem #3
-----------
  'Set Color to red
  Paint.Color(Color.RGB(255, 0, 0, 0))

color does not work on printing i get black lines

-- 
Regards,
Demosthenes Koptsis.





More information about the User mailing list