2007-07-27

Draw Logos in your images with GdiPlusX - Part 2

here are 5 new samples derived from the ones that i showed in a previous post.


 


for all the samples that i'll provide the vfpx logo will be drawn in some bigger pictures. to show all the flexibility that gdi+ can offer to us, some effects will be aplied to the logo.




 

 

important
requires vfp9 and gdiplusx to run. 
please make sure that you have the latest version!
http://www.codeplex.com/vfpx/wiki/view.aspx?title=gdiplusx&referringtitle=home

 


sample 5:


aply 100% transparency to the white color, to eliminate the background
draw the logo aplying predefined colormatrix that will the following transformation: convert to greyscale 50% transparency to the whole image
position: top left



do locfile("system.app")
with _screen.system.drawing as xfcdrawing


local lcmainpict, lclogopict
local lomainbmp as xfcbitmap
local lologobmp as xfcbitmap
local logfx as xfcgraphics


lcmainpict = getpict()
lclogopict =
getpict()
lomainbmp = .
bitmap.fromfile(lcmainpict)
lologobmp = .
bitmap.fromfile(lclogopict)
logfx = .graphics.fromimage(lomainbmp)
 
*!* sample 5
*!* aply 100% transparency to the white color, to eliminate the background
*!* draw the logo aplying predefined colormatrix that will
*!* the following transformation: convert to greyscale 50% transparency to the whole image
*!* position: top left


* first step: eliminate the white background
lologobmp.maketransparent(.color.white)


* define the transparency ratio that will be aplied
* this parameter ranges from 0 (totally transparent) to 1 (totally opaque)
local lntranspratio
lntranspratio = 0.50
&& 50%


* create a colormatrix that will have the transformations information
* the position (4,4) of the matrix is responsible for the opacity
local loclrmatrix as xfccolormatrix
loclrmatrix = .imaging.colormatrix.new( ;
   0.33, 0.33, 0.33, 0 , 0, ;
   0.33, 0.33, 0.33, 0 , 0, ;
   0.33, 0.33, 0.33, 0 , 0, ;
   0, 0, 0, lntranspratio, 0, ;
   0, 0, 0, 0 , 0)


* create an image attributes object to create the effects based in our clrmatrix
local loattr as xfcimageattributes
loattr = .imaging.imageattributes.new()
loattr.setcolormatrix(loclrmatrix)


* we need to create a rectangle that will contain the coordinates and size of the transformed logo
local lorect as xfcrectangle
lorect = .rectangle.new()
lorect.x = 0
lorect.y = 0
lorect.
width = lologobmp.width
lorect.height = lologobmp.height

* draw the transformed image using the rectangle and imgattributes/clrmatrix
logfx.drawimage(lologobmp, lorect, lologobmp.getbounds(), .graphicsunit.pixel, loattr)
lomainbmp.
save("c:\logo5.jpg", .imaging.imageformat.jpeg)
run /n explorer.exe c:\logo5.jpg
endwith
return
 
 


sample 6:


aply 100% transparency to the white color, to eliminate the background
draw the logo aplying predefined colormatrix that will convert to greyscale and 50% transparency to the whole image
position: center
size: expanded 4 times



do locfile("system.app")


with _screen.system.drawing as xfcdrawing


local lcmainpict, lclogopict
local lomainbmp as xfcbitmap
local lologobmp as xfcbitmap
local logfx as xfcgraphics


lcmainpict = getpict()
lclogopict =
getpict()
lomainbmp = .
bitmap.fromfile(lcmainpict)
lologobmp = .
bitmap.fromfile(lclogopict)
logfx = .graphics.fromimage(lomainbmp)
 
*!* sample 6
*!* aply 100% transparency to the white color, to eliminate the background
*!* draw the logo aplying predefined colormatrix that will
*!* the following transformation: convert to greyscale 50% transparency to the whole image
*!* position: center
*!* size: expanded 4 times


* first step: eliminate the white background
lologobmp.maketransparent(.color.white)


* define the transparency ratio that will be aplied
* this parameter ranges from 0 (totally transparent) to 1 (totally opaque)
local lntranspratio
lntranspratio = 0.25
&& 25%


* create a colormatrix that will have the transformations information
* the position (4,4) of the matrix is responsible for the opacity
local loclrmatrix as xfccolormatrix
loclrmatrix = .imaging.colormatrix.new( ;
   0.33, 0.33, 0.33, 0 , 0, ;
   0.33, 0.33, 0.33, 0 , 0, ;
   0.33, 0.33, 0.33, 0 , 0, ;
   0, 0, 0, lntranspratio, 0, ;
   0, 0, 0, 0 , 0)


* create an image attributes object to create the effects based in our clrmatrix
local loattr as xfcimageattributes
loattr = .imaging.imageattributes.new()
loattr.setcolormatrix(loclrmatrix)


* we need to create a rectangle that will contain the coordinates and size of the transformed logo
local lorect as xfcrectangle
lorect = .rectangle.new()
lorect.x = (lomainbmp.
width - lologobmp.width*4) / 2
lorect.y = (lomainbmp.
height - lologobmp.height*4) / 2
lorect.
width = lologobmp.width * 4
lorect.
height = lologobmp.height * 4

* draw the transformed image using the rectangle and imgattributes/clrmatrix
logfx.drawimage(lologobmp, lorect, lologobmp.getbounds(), .graphicsunit.pixel, loattr)
lomainbmp.
save("c:\logo6.jpg", .imaging.imageformat.jpeg)


run /n explorer.exe c:\logo6.jpg
endwith
return
 
 


sample 7:


aply 100% transparency to the white color, to eliminate the background
draw the logo aplying 25% opacity to the whole image
position: center
size: expanded 4 times



do locfile("system.app")


with _screen.system.drawing as xfcdrawing


local lcmainpict, lclogopict
local lomainbmp as xfcbitmap
local lologobmp as xfcbitmap
local logfx as xfcgraphics


lcmainpict = getpict()
lclogopict =
getpict()
lomainbmp = .
bitmap.fromfile(lcmainpict)
lologobmp = .
bitmap.fromfile(lclogopict)
logfx = .graphics.fromimage(lomainbmp)
 
*!* sample 7
*!* aply 100% transparency to the white color, to eliminate the background
*!* draw the logo aplying 25% opacity to the whole image
*!* position: center
*!* size: expanded 4 times


* first step: eliminate the white background
lologobmp.maketransparent(.color.white)


* define the transparency ratio that will be aplied
* this parameter ranges from 0 (totally transparent) to 1 (totally opaque)
local lntranspratio
lntranspratio = 0.25
&& 25%


* create a colormatrix that will have the transformations information
* the position (4,4) of the matrix is responsible for the opacity
local loclrmatrix as xfccolormatrix
loclrmatrix = .imaging.colormatrix.new( ;
   1, 0, 0, 0 , 0, ;
   0, 1, 0, 0 , 0, ;
   0, 0, 1, 0 , 0, ;
   0, 0, 0, lntranspratio, 0, ;
   0, 0, 0, 0 , 0)


* create an image attributes object to create the effects based in our clrmatrix
local loattr as xfcimageattributes
loattr = .imaging.imageattributes.new()
loattr.setcolormatrix(loclrmatrix)


* we need to create a rectangle that will contain the coordinates and size of the transformed logo
local lorect as xfcrectangle
lorect = .rectangle.new()
lorect.x = (lomainbmp.
width - lologobmp.width*4) / 2
lorect.y = (lomainbmp.
height - lologobmp.height*4) / 2
lorect.
width = lologobmp.width * 4
lorect.
height = lologobmp.height * 4

* draw the transformed image using the rectangle and imgattributes/clrmatrix
logfx.drawimage(lologobmp, lorect, lologobmp.getbounds(), .graphicsunit.pixel, loattr)
lomainbmp.
save("c:\logo7.jpg", .imaging.imageformat.jpeg)
run /n explorer.exe c:\logo7.jpg
endwith
return
 
 

 
sample 8:


using the techniques shown before, draw logos and text aplying variable transparencies


the code below is not optimized, and is intended only to show some possibilities


 



do locfile("system.app")


with _screen.system.drawing as xfcdrawing


local lcmainpict, lclogopict
local lomainbmp as xfcbitmap
local lologobmp as xfcbitmap
local logfx as xfcgraphics
lcmainpict =
getpict()
lclogopict =
getpict()
lomainbmp = .
bitmap.fromfile(lcmainpict)
lologobmp = .
bitmap.fromfile(lclogopict)
logfx = .graphics.fromimage(lomainbmp)
 
*!* sample 8
*!* draw image and text in different transparencies
local lcstring
local lofont as xfcfont
lofont = .
font.new("verdana", 22, .fontstyle.bolditalic)
local locolor as xfccolor
locolor = .
color.white
local lnxstring
lnxstring = 0 + lologobmp.
width
 
* first step: eliminate the white background
lologobmp.maketransparent(.color.white)


* define the transparency ratio that will be aplied
* this parameter ranges from 0 (totally transparent) to 1 (totally opaque)
local lntranspratio


* create a colormatrix that will have the transformations information
* the position (4,4) of the matrix is responsible for the opacity
local loclrmatrix as xfccolormatrix
loclrmatrix = .imaging.colormatrix.new()


* create an image attributes object to create the effects based in our clrmatrix
local loattr as xfcimageattributes
loattr = .imaging.imageattributes.new()


* we need to create a rectangle that will contain the coordinates and size of the transformed logo
local lorect as xfcrectangle
lorect = .rectangle.new()
lorect.
width = lologobmp.width
lorect.height = lologobmp.height
local
lobrush as xfcsolidbrush
lobrush = .solidbrush.new(locolor)
 
* step 1
* draw image and text 100% opaque
lnopaqueratio = 1 && 100%
loclrmatrix.matrix33 = lnopaqueratio
loattr.setcolormatrix(loclrmatrix)
lorect.x = 0
lorect.y = ( lomainbmp.
height / 5 * 1) - lologobmp.height

logfx.drawimage(lologobmp, lorect, lologobmp.getbounds(), .graphicsunit.pixel, loattr)
logfx.drawstring("gdiplusx powered - 100% opaque", lofont, lobrush, lnxstring, lorect.y)
 
* step 2
* draw image and text 80% opaque
lnopaqueratio = .80
loclrmatrix.matrix33 = lnopaqueratio
loattr.setcolormatrix(loclrmatrix)
lorect.x = 0
lorect.y = ( lomainbmp.
height / 5 * 2) - lologobmp.height
locolor.a = lnopaqueratio * 255
lobrush.
color = locolor

logfx.drawimage(lologobmp, lorect, lologobmp.getbounds(), .graphicsunit.
pixel, loattr)
logfx.drawstring("gdiplusx powered - 80% opaque", lofont, lobrush, lnxstring, lorect.y)
 
* step 3
* draw image and text 60% opaque
lnopaqueratio = .60
loclrmatrix.matrix33 = lnopaqueratio
loattr.setcolormatrix(loclrmatrix)
lorect.x = 0
lorect.y = ( lomainbmp.
height / 5 * 3) - lologobmp.height

locolor.a = lnopaqueratio * 255
lobrush.
color = locolor

logfx.drawimage(lologobmp, lorect, lologobmp.getbounds(), .graphicsunit.
pixel, loattr)
logfx.drawstring("gdiplusx powered - 60% opaque", lofont, lobrush, lnxstring, lorect.y)
 
 
* step 4
* draw image and text 40% opaque
lnopaqueratio = .40
loclrmatrix.matrix33 = lnopaqueratio
loattr.setcolormatrix(loclrmatrix)
lorect.x = 0
lorect.y = ( lomainbmp.
height / 5 * 4) - lologobmp.height

locolor.a = lnopaqueratio * 255
lobrush.
color = locolor

logfx.drawimage(lologobmp, lorect, lologobmp.getbounds(), .graphicsunit.
pixel, loattr)
logfx.drawstring("gdiplusx powered - 40% opaque", lofont, lobrush, lnxstring, lorect.y)
 
 
* step 4
* draw image and text 20% opaque
lnopaqueratio = .20
loclrmatrix.matrix33 = lnopaqueratio
loattr.setcolormatrix(loclrmatrix)
lorect.x = 0
lorect.y = ( lomainbmp.
height / 5 * 5) - lologobmp.height

locolor.a = lnopaqueratio * 255
lobrush.
color = locolor

logfx.drawimage(lologobmp, lorect, lologobmp.getbounds(), .graphicsunit.
pixel, loattr)
logfx.drawstring("gdiplusx powered - 20% opaque", lofont, lobrush, lnxstring, lorect.y)
 
 
lomainbmp.
save("c:\logo8.jpg", .imaging.imageformat.jpeg)
run /n explorer.exe c:\logo8.jpg
endwith
return
 


 


sample 9:


same as previous sample, using the techniques shown before, draw logos and text aplying variable transparencies, using a monochrome logo.


the code below is not optimized, and is intended only to show some possibilities


 



do locfile("system.app")


with _screen.system.drawing as xfcdrawing


local lcmainpict, lclogopict
local lomainbmp as xfcbitmap
local lologobmp as xfcbitmap
local logfx as xfcgraphics


lcmainpict = getpict()
lclogopict =
getpict()
lomainbmp = .
bitmap.fromfile(lcmainpict)
lologobmp = .
bitmap.fromfile(lclogopict)
logfx = .graphics.fromimage(lomainbmp)
 
*!* sample 9
*!* draw image and text in different transparencies
local lcstring
local lofont as xfcfont
lofont = .
font.new("verdana", 30, .fontstyle.bolditalic)
local locolor as xfccolor
locolor = .
color.white
local lobrush as xfcsolidbrush
lobrush = .solidbrush.new(locolor)
 
local lnxstring
lnxstring = 0 + 10 + lologobmp.
width
 
* first step: eliminate the white background
lologobmp.maketransparent(.color.white)


* define the transparency ratio that will be aplied
* this parameter ranges from 0 (totally transparent) to 1 (totally opaque)
local lntranspratio
* create a colormatrix that will have the transformations information
* the position (4,4) of the matrix is responsible for the opacity


local loclrmatrix as xfccolormatrix
loclrmatrix = .imaging.colormatrix.new( ;
   0.33, 0.33, 0.33, 0 , 0, ;
   0.33, 0.33, 0.33, 0 , 0, ;
   0.33, 0.33, 0.33, 0 , 0, ;
   0, 0, 0, 1 , 0, ;
   0, 0, 0, 0 , 0)
 
* create an image attributes object to create the effects based in our clrmatrix
local loattr as xfcimageattributes
loattr = .imaging.imageattributes.new()
* we need to create a rectangle that will contain the coordinates and size of the transformed logo
local lorect as xfcrectangle
lorect = .rectangle.new()
lorect.
width = lologobmp.width
lorect.height = lologobmp.height
 
 
 
 
* step 1
* draw image and text 100% opaque
lnopaqueratio = 1 && 100%
loclrmatrix.matrix33 = lnopaqueratio
loattr.setcolormatrix(loclrmatrix)
locolor.a = lnopaqueratio * 255
lobrush.
color = locolor
lorect.x = 0
lorect.y = ( lomainbmp.
height / 5 * 1) - lologobmp.height

logfx.drawimage(lologobmp, lorect, lologobmp.getbounds(), .graphicsunit.pixel, loattr)
logfx.drawstring("gdiplusx powered", lofont, lobrush, lnxstring, lorect.y)
 
 
* step 2
* draw image and text 80% opaque
lnopaqueratio = .80
loclrmatrix.matrix33 = lnopaqueratio
loattr.setcolormatrix(loclrmatrix)
lorect.x = 0
lorect.y = ( lomainbmp.
height / 5 * 2) - lologobmp.height
locolor.a = lnopaqueratio * 255
lobrush.
color = locolor

logfx.drawimage(lologobmp, lorect, lologobmp.getbounds(), .graphicsunit.
pixel, loattr)
logfx.drawstring("gdiplusx powered", lofont, lobrush, lnxstring, lorect.y)
 
 
* step 3
* draw image and text 60% opaque
lnopaqueratio = .60
loclrmatrix.matrix33 = lnopaqueratio
loattr.setcolormatrix(loclrmatrix)
lorect.x = 0
lorect.y = ( lomainbmp.
height / 5 * 3) - lologobmp.height

locolor.a = lnopaqueratio * 255
lobrush.
color = locolor

logfx.drawimage(lologobmp, lorect, lologobmp.getbounds(), .graphicsunit.
pixel, loattr)
logfx.drawstring("gdiplusx powered", lofont, lobrush, lnxstring, lorect.y)
 
 
* step 4
* draw image and text 40% opaque
lnopaqueratio = .40
loclrmatrix.matrix33 = lnopaqueratio
loattr.setcolormatrix(loclrmatrix)
lorect.x = 0
lorect.y = ( lomainbmp.
height / 5 * 4) - lologobmp.height

locolor.a = lnopaqueratio * 255
lobrush.
color = locolor

logfx.drawimage(lologobmp, lorect, lologobmp.getbounds(), .graphicsunit.
pixel, loattr)
logfx.drawstring("gdiplusx powered", lofont, lobrush, lnxstring, lorect.y)
 
 
* step 5
* draw image and text 20% opaque
lnopaqueratio = .20
loclrmatrix.matrix33 = lnopaqueratio
loattr.setcolormatrix(loclrmatrix)
lorect.x = 0
lorect.y = ( lomainbmp.
height / 5 * 5) - lologobmp.height

locolor.a = lnopaqueratio * 255
lobrush.
color = locolor

logfx.drawimage(lologobmp, lorect, lologobmp.getbounds(), .graphicsunit.
pixel, loattr)
logfx.drawstring("gdiplusx powered", lofont, lobrush, lnxstring, lorect.y)
 
 
* finished drawing, now save the image and show it !
lomainbmp.save("c:\logo9.jpg", .imaging.imageformat.jpeg)
run /n explorer.exe c:\logo9.jpg
endwith
return

1 comment:

  1. Este artículo se encuentra traducido al español en PortalFox en el siguiente enlace:


    -- Dibujar Logos en sus imágenes con GdiPlusX - Parte 2 --

    http://www.portalfox.com/article.php?sid=2482




    ReplyDelete