Here are some notes on BMP transparencies on VFP, based in some conclusions I took after some discussions in Foxite, specially the ones with Bernard Bout.
BMP image files, when used in the picture property of the Image control usually show whites - RGB(255,255,255) as transparent. VFP creates a temporary mask for our pictures in order to show this way.

Picture 1: BMPs can have WHITEs converted to transparent when using the "Picture" property and BackStyle set to "Transparent".
But this works only for the PICTURE property, NOT for PICTUREVAL !
The code below creates a simple image on the fly, and saves it to disk. The image on the left uses the PICTURE property, and the right one uses PICTUREVAL.
IMPORTANT
Requires VFP9 and GdiPlusX to run. 
Please make sure that you have the latest version, because VFPPaint uses some functions that were added recently.
http://www.codeplex.com/VFPX/Wiki/View.aspx?title=GDIPlusX&referringTitle=Home
PUBLIC oForm
oForm = NEWOBJECT("form1")
oForm.Show
RETURN
DEFINE CLASS form1 AS form
Top = 13
Left = 17
Height = 168
Width = 314
DoCreate = .T.
Caption = "Testing PictureVal rendering"
Name = "Form1"
ADD OBJECT image1 AS image WITH ;
BackStyle = 0, ;
Height = 120, ;
Left = 24, ;
Top = 24, ;
Width = 120, ;
Name = "Image1"
ADD OBJECT image2 AS image WITH ;
BackStyle = 0, ;
Height = 120, ;
Left = 168, ;
Top = 24, ;
Width = 120, ;
Name = "Image2"
PROCEDURE Init
DO LOCFILE("System.App")
LOCAL loBmp as xfcBitmap
LOCAL loGfx as xfcGraphics
WITH _Screen.System.Drawing
loBmp = .Bitmap.New(60, 60, 0, .Imaging.PixelFormat.Format24bppRGB)
loGfx = .Graphics.FromImage(loBmp)
loGfx.Clear(.Color.White)
loGfx.DrawRectangle(.Pen.New(.Color.Red, 3), 10,10,40,40)
loBmp.Save("c:\tempBMP.bmp", .Imaging.ImageFormat.Bmp)
ENDWITH
Thisform.Image1.Picture = "c:\tempBMP.bmp"
Thisform.Image2.PictureVal = FILETOSTR("c:\tempBMP.bmp")
ENDPROC
ENDDEFINE

Picture 2: BMPs show WHITES as transparent only when using the "Picture" property. When using "PictureVal", images are shown without a transparent mask.
The image from the left uses the Picture property, and the right one uses the PictureVal property in the most simple aproach: FILETOSTRING("c:\MyPicture.Bmp")
That shows us that unfortunately we can't obtain transparencies in BMPs using the PictureVal property.
Fortunately, in VFP9 SP2 the VFP Team fixed the PNG rendering problem, and we can use PNGs with our VFP Image objects. But in this case, we need to set manually the Alpha channel, specifying which color (or colors) will become transparent.
With GdiPlusX these things become really easy. Just one line will do the trick:
This.oBmp.MakeTransparent(.Color.White)
Substitute the above code's INIT() procedure with the one below, that just changes the rendering to PNG, and uses the "MAKETRANSPARENT" method of the xfcBitmap GdiPlusX library:
PROCEDURE Init
DO LOCFILE("System.App")
LOCAL loBmp as xfcBitmap
LOCAL loGfx as xfcGraphics
WITH _Screen.System.Drawing
loBmp = .Bitmap.New(60, 60) && The default is 32bppARGB
loGfx = .Graphics.FromImage(loBmp)
loGfx.Clear(.Color.White)
loGfx.DrawRectangle(.Pen.New(.Color.Red, 3), 10,10,40,40)
loBmp.MakeTransparent(.Color.White)
loBmp.Save("c:\tempPNG.png", .Imaging.ImageFormat.Png)
ENDWITH
Thisform.Image1.Picture = "c:\tempPNG.png"
Thisform.Image2.PictureVal = FILETOSTR("c:\tempPNG.png")
ENDPROC

Picture 3: PNGs allow the use of the Alpha channel, so transparencies are available both for Picture and PictureVal properties
Is that enough ?
STILL NOT ENOUGH FOR BERNARD - PART 1
As he said in one Foxite thread: "VFP does have a problem refreshing PNG's of any reasonable size. They do "Flash". The best format to use with VFP is the BMP." - TOTALLY TRUE - Humpf !. That's very easy to reproduce, create any form, put an image object inside of it, using any PNG image. Then, add another image, but this time use a BMP. Set the anchor properties, run the form, and resize it, to understand what happens. Maybe for the vast majority of people this is acceptable, but with BMPs we still can have a good result.
STILL NOT ENOUGH FOR BERNARD - PART 2
He noticed that the BMPs originated from the samples that I've been providing using GDI+ could not have their WHITES to become TRANSPARENT when used in the Image control.
!#*$¨*&¨($%+)(*#$%&(_*%¨#)&*(¨#&*()YUIOH%&*_#(*&%(_*#$¨
The truth is that he had reported this last year, when I created a sample for his awesome ONE NOTE TABS - "VFP-X GDI+ code samples for "Recreating One Note Tabs in VFP9" from Bernard"
He has just brought this subject again in a recent Foxite thread, and I finally took the time to make some new tests, and found the problem.
In most cases, when I created my bitmaps from scratch, I used the xfcBitmap.Create() method, just like this:
LOCAL loBmp as xfcBitmap
loBmp = .Bitmap.New(lnWidth, lnHeight)
This by default created a bitmap with the dimensions lnWidth x lnHeight, with 32bppARGB PixelFormat. That means that for each pixel of the bitmap we would be using 32bits, or 4 bytes - for RED, GREEN, BLUE and ALPHA (transparency).
But BMPs don't support transparencies !
So, the ALPHA byte is totally useless for the BMP case, making our file to become 25% bigger...
The major problem is that VFP does not transform WHITES from 32bppARGB Bitmaps into transparent !!!
So, when creating a bitmap that will be saved in the BMP image format, NEVER use 32bppARGB. Use 24bppRGB instead ! And this definitely solves our problem, and Bernard will be able to continue to develop his masterpieces of design, hopefully, using GdiPlusX.
Instead of :
loBmp = .Bitmap.New(lnWidth, lnHeight)
Use:
loBmp = .Bitmap.New(60, 60, 0, .Imaging.PixelFormat.Format24bppRGB)
Thanks Bernard ! This was a good lesson to me, I've learned some good things in this investigation. Very nice, since this brings some new possibilities for some new controls.
The GdiPlusX ImageCanvas control will also receive some modifications, allowing to render in file mode, saving to TMP files, but using 24bppRGB, to allow the transparencies. Another modification that we agreed is to add a PNG render mode, since PNGs allow the use of the alpha channel.
VFPPaint was also updated, allowing users to choose between 24bppRGB (new default value) and 32bppARGB.