[Gambas-user] About Printer

Demosthenes Koptsis demosthenesk at ...626...
Tue Jul 19 15:02:30 CEST 2011


On Tue, 2011-07-19 at 14:43 +0200, Benoît Minisini wrote:
> > 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
> > 

Is it possible to add properties such LeftMargin, RightMargin,
TopMargin, BottomMargin?

> > i get the rectangle at the beginning of page, straight to border.
> 
> You must set the FullPage to print on the entire page. Otherwise margins will 
> be taken into account.

ok!

> 
> > 
> > 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?
> 
> You shouldn't. Can you print the values of prtPrinter.PaperWidth, 
> prtPrinter.PaperHeight, Paint.Width, Paint.Height, wFactor, hFactor...?
> 

  Print prtPrinter.PaperWidth
  Print prtPrinter.PaperHeight
  Print Paint.Width
  Print Paint.Height
  Print wFactor
  Print hFactor

  210
  297
  595.275590551181
  841.889763779528
  0.352777777777778
  0.352777777777778


> > 
> > Problem #3
> > -----------
> >   'Set Color to red
> >   Paint.Color(Color.RGB(255, 0, 0, 0))
> > 
> > color does not work on printing i get black lines
> 
> Paint.Color creates a brush that you must assign to the Paint.Brush property:
> 
> 	Paint.Brush = Paint.Color(Color.RGB(255, 0, 0, 0))
> 
> Regards,
> 

ok!

-- 
Regards,
Demosthenes Koptsis.





More information about the User mailing list