[Gambas-user] Print probleem with pictures/text

Timothy Marshal-Nichols timothy.marshal-nichols at ...247...
Thu Jul 20 10:36:30 CEST 2006


> -----Original Message-----
> From: gambas-user-bounces at lists.sourceforge.net
> [mailto:gambas-user-bounces at lists.sourceforge.net]On Behalf Of Ron
> Onstenk
> Sent: Thursday, 20 July 2006 06:42
> To: gambas-user at lists.sourceforge.net
> Subject: [Gambas-user] Print probleem with pictures/text
>
>
> I use A4 paper
> On that sheet should be 2 sections.
> Every section consists of a picture and some labels with a
> textbox as overlay on the picture
> The first step was using a Me.Grab() on the the form and was printed OK.
> Then I add the second section.
> I had of course to change the height of the form.
> Using the .Grab() shows me garbage on the bottom.
> The bottom of the form was below the taskbar.
>
> Then I did use a stand alone Image
> try to put from both picturebox a .grab() in the Image.
> The second replace the first one.
> Using Picture, Panel, Scrollview and Drawingarea did not solve
> the replace.
>
>
> from the print project
> ' Name: ModulePrinting
> ' Author: Timothy Marshal-Nichols
>
>
> PUBLIC SUB PrintImage(img AS Image, OPTIONAL FitToPage AS Boolean)
>   DIM imageToPrint AS Image
>   DIM imageWidth AS Integer
>   DIM imageHeight AS Integer
>   DIM scaleIsotropic AS Float
>   ' Display printer dialog
>   IF Printer.Setup() THEN RETURN
>   INC Application.Busy
>   ' Get image size for the printer resolution
>   imageWidth = (img.Width * Printer.Resolution) / Desktop.Resolution
>   imageHeight = (img.Height * Printer.Resolution) / Desktop.Resolution
>   ' Adjust image size if it does not fit on the printer page
>   ' Also if the fit to page option is set fill the page with the image
>   IF FitToPage OR imageWidth > Printer.Width OR imageHeight >
> Printer.Height THEN
>     ' Scale Isotropic, keep aspect ratio of the image
>     scaleIsotropic = Min(Printer.Width / imageWidth,
> Printer.Height / imageHeight)
>     imageWidth *= scaleIsotropic
>     imageHeight *= scaleIsotropic
>   END IF
>   ' Scale image
>   imageToPrint = img.Stretch(imageWidth, imageHeight, TRUE)
>   ' Draw image centred on printer page
>   Draw.Begin(Printer)
>   Draw.Image(imageToPrint, (Printer.Width - imageWidth) / 2,
> (Printer.Height - imageHeight) / 2)
>   Draw.End
>   DEC Application.Busy
> END
>
>
> This was usable to print my first trial with 1/2 A4 sheet
>
> PUBLIC SUB PrintImage(img AS Image,img2 AS Image, OPTIONAL
> FitToPage AS Boolean)
>   DIM imageToPrint AS Image
>   DIM imageToPrint2 AS Image
>
> ......
> 'STATIC SUB Image ( Image AS Image, X AS Integer, Y AS Integer
>      [ , SrcX AS Integer, SrcY AS Integer, SrcWidth AS Integer,
> SrcHeight AS Integer ] )
>
>
>   Draw.Begin(Printer)
> '                image                    x                   y
> srcx srcy  srcw        srch
>   Draw.Image(imageToPrint,  (Printer.Width - imageWidth) / 2, 0,
>  0,   0,   imageWidth, 528)
>   Draw.Image(imageToPrint2, (Printer.Width - imageWidth) / 2,
> 528, 0,   0,   imageWidth, 528)
>   Draw.End
>
>
> Same result. not working or not correct.
>
> Basic I need to print two sections as described above.
> I do have a Form with the size of 1/2 A4.
> The place of the labels and textbox are adjustable to fit the image below.
>
> Next trial:
> Printing text using Draw.Text
>
> STATIC SUB Text ( Text AS String, X AS Integer, Y AS Integer
> 	[ , Width AS Integer, Height AS Integer, Alignment AS Integer ] )
>
> If you specified the optional parameters, then the text is constrained to
> the given rectangle, and aligned according to the Alignment parameter.
>
> The original text in the section is around 6 lines and on the
> left half of the section.
> It is not in a boxed way but 1 long line.
>
> I did try also to use the draw.clip
>
>   .DrawClip
>   This virtual class is used for defining the clipping area of a drawing.
>   The drawing methods never draw outside of the clipping area.
>
>   STATIC SUB .DrawClip ( X AS Integer, Y AS Integer, Width AS
> Integer, Height AS Integer )
>
> draw.clip(100, 100, 100, 100) as trial example.
> No success. Printing one line full width.
>
> The screen is 96 dpi and the printer is, with gambas
> printer.resolution, 600 dpi.
> (The print test say 300 in cups, HP Laserjet 4si)
>
> Using for the positions with Draw the pixel is multiply by
> (printer.resolution/desktop.resolution)
> The tests I did and when there is something printed where on the
> right positions.
>
>
> But also not allways the print did work on Draw.End
> It looks to me the case when Draw positions are out of page values.
> (Printing beside the paper sheet.
> In console (xterm) no report of error to see.
>
> What me is irritating is that i'm not able to Draw two pictures
> on one sheet.
> Direct printing of the texts in parts of the section/sheet are
> not clipped/wrapped
> in the dimensions I wish, and that should be regarding Draw.Clip
> explanation.
>
> Why Pictures? Well I need 4 upper sections with 8 lower sections and they
> contain logo and object diagrams.
> Bit stupid to preprint 32 different sheets.
> Beside the object diagrams does not allow those also preprinted.
> The labels and textbox are on different places for the objects.
>
> They are used to be able to place them graphically and the
> textbox for the
> values need for that print.
> The client that will use it is a ordinary user and may/can not
> change program.
> The press a 'Safe Layout' and/or 'Print This' button.
>
> Is there someone that can help me to print those 2 pictures and
> place the text
> over the picture in a boxed way
>
> I'm desperate crying for help after 2 weeks trial/error 6hours/day in a
> not so very friendly environment for programming (and cant change
> it :( ).
>
> Ron
>
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to
> share your
> opinions on IT & business topics through brief surveys -- and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user


The attached project should print out two images on a page. One in the top
half, and the other - surprise, surprise - in the bottom. Above each image
should be some text (from a text area) centred in a rectangle. I hope this
goes some way in demonstrating what you need to do in your project. (I could
not completely work out what you wanted from your email)

One thing I should apologise for. This project has been done on a slightly
out of data version of the development version of Gambas and is a bit quick
and dirty. (I am in the middle of updating the Linux distribution I am
using. And I have not reinstalled everything.) I hope this does not cause
any problems, but I thought I had better warn just in case you have any
problems with the project.

Thanks

8-{)} Timothy Marshal-Nichols
<mailto: timothy.marshal-nichols at ...247...>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: PrintTwoImages.tar
Type: application/x-tar
Size: 20480 bytes
Desc: not available
URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20060720/ed0dc34a/attachment.tar>


More information about the User mailing list