[Gambas-user] Yet another simple printing question !
Vasilis Kanatas
vkanatas13 at ...626...
Thu Mar 20 22:55:56 CET 2014
Thanks Rolf-Werner,
I tried
Private $hImage As New Image
and had the same result ! Printing white page!
What I want is to print the labels of a form or ScrollArea!!
I also tried to change the *Printing Example of Gambas 3* to make it work
for my issue. Here's what I did (3 steps):
1......I've changed Form_load as following to Grab the contents of
srcImage.ScrollArea:
Public Sub Form_Open()
Me.Center
txtText.Text = File.Load("molly-malone.txt")
txtFontText.Text = Font["17"].ToString()
Try $hImage = scrImage.Grab
' $hImage = New Image(scrImage.Width, scrImage.Height)
'scrImage.ResizeContents($hImage.W, $hImage.H)
'scrImage.Refresh
End
2.......Inside the scrImage.ScrollArea I placed some labels, ie
Label1.label, Label2.label etc.
3.......I commented out the load picture (because the main purpose is to
print the context,ie the Labels that I placed inside, of
srcImage.ScrollArea) as following:
Public Sub btnOpenImage_Click()
' Dialog.Title = "Select an image file"
' Dialog.Filter = ["*.png;*.jpg;*.jpeg;*.gif;*.xpm", "Image files"]
' If Dialog.OpenFile() Then Return
Try $hImage = Image.Load(Dialog.Path)
scrImage.ResizeContents($hImage.W, $hImage.H)
scrImage.Refresh
End
But still got blanc page printed.
(The printing example works fine in its initial form)
Attached is the Changed Code
On Thu, Mar 20, 2014 at 7:27 PM, Rolf-Werner Eilert <
eilert-sprachen at ...221...> wrote:
> Vasilis,
>
> I've got to leave the office now, but at a quick glance:
>
> > Private $hImage As Image
>
> Shouldn't this be As New Image?
>
> >
> >
> > Public Sub Form_Open()
> > Me.Center
> > Try $hImage = Me.Grab.Image
> > End
> >
> > Public Sub Printer1_Draw()
> >
> > Dim hImage As Image
>
> And maybe the same here?
>
> Regards
> Rolf
>
> >
> > If Not $hImage Then Return
> > hImage = $hImage
> > Paint.DrawImage(hImage)
> >
> > End
> >
> > Public Sub PrintButton_Click()
> >
> > If Printer1.Configure() Then Return
> >
> > Me.Enabled = False
> > Inc Application.Busy
> > Printer1.Print
> > Dec Application.Busy
> > Me.Enabled = True
> >
> > End
> > --------------------------------------------------------------------
> >
> > Thank you!
> > Vasilis
> >
> ------------------------------------------------------------------------------
> > Learn Graph Databases - Download FREE O'Reilly Book
> > "Graph Databases" is the definitive new guide to graph databases and
> their
> > applications. Written by three acclaimed leaders in the field,
> > this first edition is now available. Download your free book today!
> > http://p.sf.net/sfu/13534_NeoTech
> > _______________________________________________
> > Gambas-user mailing list
> > Gambas-user at lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/gambas-user
> >
>
>
> ------------------------------------------------------------------------------
> Learn Graph Databases - Download FREE O'Reilly Book
> "Graph Databases" is the definitive new guide to graph databases and their
> applications. Written by three acclaimed leaders in the field,
> this first edition is now available. Download your free book today!
> http://p.sf.net/sfu/13534_NeoTech
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user
>
-------------- next part --------------
' Gambas class file
Private $hImage As Image
Public Sub Form_Open()
Me.Center
txtText.Text = File.Load("molly-malone.txt")
txtFontText.Text = Font["17"].ToString()
Try $hImage = scrImage.Grab
' $hImage = New Image(scrImage.Width, scrImage.Height)
'scrImage.ResizeContents($hImage.W, $hImage.H)
'scrImage.Refresh
End
Private Sub GetText() As String
Dim sText As String
sText = txtText.Text
If Not btnRichText.Value Then sText = Replace(Html(sText), "\n", "<br>")
Return sText
End
Private Sub RefreshText()
Dim hFont As Font = Font[txtFontText.Text]
Dim sText As String = GetText()
scrText.ResizeContents(scrText.ClientW, hFont.RichTextHeight(sText, scrText.ClientW - 16) + 16)
scrText.Refresh
End
Public Sub scrText_Draw()
Dim sText As String = GetText()
Draw.FillRect(0, 0, Draw.W, Draw.H, Color.TextBackground)
Try Draw.Font = Font[txtFontText.Text]
Draw.Translate(- scrText.ScrollX, - scrText.ScrollY)
Draw.RichText(sText, 8, 8, scrText.ClientW - 16, scrText.ClientH - 16, Align.TopNormal)
End
Public Sub btnRichText_Click()
RefreshText
End
Public Sub txtText_Change()
RefreshText
End
Public Sub txtFontText_Click()
Dialog.Title = "Select a font"
Dialog.Font = Font[txtFontText.Text]
If Dialog.SelectFont() Then Return
txtFontText.Text = Dialog.Font.ToString()
RefreshText
End
Public Sub scrText_Arrange()
RefreshText
End
Public Sub btnOpenText_Click()
Dialog.Title = "Select a text file"
If Dialog.OpenFile() Then Return
Try txtText.Text = File.Load(Dialog.Path)
End
Public Sub btnPrintText_Click()
If prtText.Configure() Then Return
Me.Enabled = False
Inc Application.Busy
prtText.Print
Dec Application.Busy
Me.Enabled = True
End
Public Sub prtText_Begin()
Dim PRINT_MARGIN As Float = Paint.Width / prtText.PaperWidth * 10
Dim hExtents As PaintExtents
Paint.Font = Font[txtFontText.Text]
hExtents = Paint.RichTextExtents(GetText(), Paint.Width - PRINT_MARGIN * 2)
prtText.Count = Ceil(hExtents.Height / (Paint.Height - PRINT_MARGIN * 2))
End
Public Sub prtText_Draw()
Dim PRINT_MARGIN As Float = Paint.Width / prtText.PaperWidth * 10
Debug "Printing page";; prtText.Page
Paint.Font = Font[txtFontText.Text]
Paint.Rectangle(PRINT_MARGIN / 2, PRINT_MARGIN / 2, Paint.Width - PRINT_MARGIN, Paint.Height - PRINT_MARGIN)
Paint.LineWidth = Paint.Width / prtText.PaperWidth * 0.5
Paint.Stroke
Paint.Rectangle(PRINT_MARGIN, PRINT_MARGIN, Paint.Width - PRINT_MARGIN * 2, Paint.Height - PRINT_MARGIN * 2)
Paint.Clip
Paint.DrawRichText(GetText(), PRINT_MARGIN, PRINT_MARGIN - (prtText.Page - 1) * (Paint.Height - PRINT_MARGIN * 2), Paint.Width - PRINT_MARGIN * 2, Paint.Height * prtText.Count, Align.TopNormal)
Paint.ResetClip
End
Public Sub btnOpenImage_Click()
' Dialog.Title = "Select an image file"
' Dialog.Filter = ["*.png;*.jpg;*.jpeg;*.gif;*.xpm", "Image files"]
' If Dialog.OpenFile() Then Return
Try $hImage = Image.Load(Dialog.Path)
scrImage.ResizeContents($hImage.W, $hImage.H)
scrImage.Refresh
End
Public Sub scrImage_Draw()
If $hImage Then Draw.Image($hImage, - scrImage.ScrollX, - scrImage.ScrollY)
End
Public Sub btnPrintImage_Click()
If prtImage.Configure() Then Return
Me.Enabled = False
Inc Application.Busy
prtImage.Print
Dec Application.Busy
Me.Enabled = True
End
Public Sub prtImage_Draw()
Dim PRINT_MARGIN As Float = Paint.Width / prtText.PaperWidth * 10
Dim hImage As Image
Dim W, H As Float
If Not $hImage Then Return
hImage = $hImage
If hImage.Width > hImage.Height Then hImage = hImage.Rotate(Pi(0.5))
W = Paint.Width - PRINT_MARGIN * 2
H = W * hImage.Height / hImage.Width
Paint.DrawImage(hImage, PRINT_MARGIN, (Paint.Height - H) / 2, W, H)
End
More information about the User
mailing list