[Gambas-user] How to insert a .png file into a CairoPdfSurface (gb.cairo)
Willy Raets
willy at ...2734...
Sat Aug 24 15:34:35 CEST 2013
On Sat, 2013-08-24 at 10:54 +0200, Tobias Boege wrote:
> On Sat, 24 Aug 2013, Willy Raets wrote:
> > On Sat, 2013-08-24 at 03:19 +0200, Willy Raets wrote:
> > > Hi All,
> > >
> > > Been struggling with inserting an existing .png file onto a
> > > CairoPdfSurface (gb.cairo).
> > >
> > > Done some extensive reading in the documentation but do not seem to find
> > > a method get the job done. Is this not possible or am I misunderstanding
> > > the documentation?
> > >
> > > Piece of the code of the project:
> > >
> > > Public Sub MakePdf()
> > >
> > > Dim hPdfProjectFile As CairoPdfSurface
> > > Dim sPdfPath, sPicPath As String
> > > Dim iX, iY As Float
> > > sPicPath = User.Home & "/MyFolder/mypicture.png"
> > > sPdfPath = User.Home & "/MyFolder/project.pdf"
> > > hPdfProjectFile = New CairoPdfSurface(sPdfPath, 210, 297)
> > > Cairo.Begin(hPdfProjectFile)
> > > '--Draw title --
> > > iY = 250
> > > '-- Some code to determine X co??rdinate iX --
> > > ...
> > > ...
> > > Cairo.Font.Bold = True
> > > Cairo.Font.Size = 18
> > > Cairo.MoveTo(iX, iY)
> > > Cairo.DrawText(Start.ProjectLoadedTitle)
> > > Cairo.Font.Bold = False
> > > '
> > > '--Draw project logo --
> > > iY = 285
> > > ... '<== stuck right here!!
> > > '
> > > '--Draw Document Version--
> > > iY = 500
> > > ...
> > > ...
> > > Cairo.End
> > >
> > > End
> > >
> > > Anyone any ideas, suggestions, links?
> > >
> >
> > Just to clarify, I need the .png in sPicPath = User.Home &
> > "/MyFolder/mypicture.png" do be drawn underneath the Title at
> > section '--Draw project logo --
> >
>
> Maybe you could (ab)use Cairo.ImagePattern()? Load the image, call that
> method and assign the result to Cairo.Source. Cairo.Paint() then does the
> job.
I already tried the Cairo.ImagePattern, but didn't know about having to
assign the result to Cairo.Source.
so I have tried this now, but still no result. I am new to cairo and not
completely understand all that it does (my lack of insight).
This is the code I tried now but it doesn't give me a result. What am I
doing wrong?
Public Sub MakePdf()
Dim hPdfProjectFile As CairoPdfSurface
Dim sPdfPath, sPicPath As String
Dim picImage As Image
Dim iX, iY As Float
sPicPath = User.Home & "/MyFolder/mypicture.png"
sPdfPath = User.Home & "/MyFolder/project.pdf"
hPdfProjectFile = New CairoPdfSurface(sPdfPath, 210, 297)
Cairo.Begin(hPdfProjectFile)
'--Draw title --
..
..
'--Draw project logo --
iX = 230
iY = 235
If Exist(sPicturePath) Then
picImage.Load(sPicturePath)
Cairo.MoveTo(iX, iY)
Cairo.Source = Cairo.ImagePattern(picImage)
Cairo.Paint '<-- nothing gets painted on PdfSurface
Endif
..
End
>
> I don't know Cairo but this seems like how it's done here[0]. It works in my
> test case.
Don't know much C but I'll analyse and see if I get any wiser. Thanks
>
> Regards,
> Tobi
>
> [0] http://zetcode.com/gfx/cairo/cairoimages/
--
Kind regards,
Willy (aka gbWilly)
http://gambasshowcase.org/
http://howtogambas.org
http://gambos.org
More information about the User
mailing list