Compact Framework

Using GDI+ on Windows Mobile

Alex Feinman
OpenNETCF Consulting
October 2007

 

Download the Source Code
 Download the PDF

What is GDI+

GDI+ is a library created to add rich drawing and imaging feature to the basic set of Windows APIs. It has been introduced in Windows 2000 timeframe and eventually became a basis of System.Drawing and System.Drawing.Imaging namespaces. GDI+ is a dual API. It has a set of rich objects, such as Graphics, Bitmap, Pen, Brush etc as well, as a flat API suitable for use in legacy C or for P/Invoking. Starting with Windows Mobile 5 (Pocket PC), GDI+ ships on Windows Mobile devices. Despite the fact that the desktop .NET drawing and imaging support is built on top of GDI+, the Compact Framework does not use it. This in part explains somewhat more Spartan selection of graphic features available in Compact framework. Of course one of the main reasons for this was the lack of universal availability of GDI+. E.g it is not present on 2003 and 2003 SE devices, any version of smartphone (including Windows Mobile  6 Standard) or basic Windows CE.

It is also important to understand that Windows Mobile version of GDI+ lacks many features of its desktop counterpart. Although it is 100% API-compatible, a lot of calls is simply not implemented. All it does is returning the corresponding status (NotImplemented) to the caller.

Why GDI+

As I understand it, the need for GDI+ has been driven by inking support. Transcriber (an Input Method supporting cursive recognition) and in WinMo 6 WISPLite (inking and recognition support) both use GDI+ internally.

GDI+ allows drawing with antialiasing, transparency and some limited 2D transformation support. Currently, there is no other way to draw an antialiased polyline, curve or other object in Windows CE, than by using GDI+.

GDI+ supports Rectangles, Pies, Ellipses, Beziers as part of a Path object. It also supports various special types of pens and brushes including gradients.

Things notably missing from Windows Mobile version of GDI+ are:

  • Text support
  • World Transform support. In general transforms are only supported on a Path object
  • Many image operations

From the performance standpoint GDI+ is a slow-ish API. It needs to be used judiciously and sparingly. Caching complex objects as bitmaps also helps.

How

API access

GDI+ API consists of 2 parts. One is GDIPLUS.DLL, which exports so-called flat API – a large number of C functions that comprise the entire functional set of the API. The other is a set of C++ objects, found in the include directory of Platform SDK, which encapsulates flat API functionality, provides memory management, cleanup and some useful shortcuts. When using GDI+ from Compact Framework, it is relatively easy to P/Invoke the flat API. The class-based API is a different thing. It is absolutely, 100% incompatible with Compact Framework. It can however be recreated in C# and given its usefulness, it should be.

Caution needs to be exercised, when using GDI+. The code needs to make sure that the platform indeed has GDIPLUS.DLL and be prepared to deal with the lack of it, for example by falling back to less rich, traditional methods of drawing.

Session initialization and termination

Before GDI+ can be used, a call to “GdiplusStartup” needs to be made:

        GdiplusStartupInput input = new GdiplusStartupInput();

        GdiplusStartupOutput output;

        GpStatus stat = NativeMethods.GdiplusStartup(out token, input, out output);

 

The above code initializes GDI+ subsystem. The parameters can be ignored – there is not much use to them unless you have a debug build of GDIPLUS.DLL, which is not likely. This is also a good place to add try/catch and watch for MissingMethodException. Getting one would typically indicate that your platform does not have GDIPLUS.DLL available.

When the application is shutting down (or GDI+ is not needed anymore), the following call is required:

        NativeMethods.GdiplusShutdown(token);

 

Following this call no other GDI+ calls are allowed.

Managed wrapper

To be able to use GDI+ in a Compact Framework application, we need to wrap most of the flat API and port the object model. This is done for you in OpenNETCF.GDIPlus.dll assembly. It has a class called NativeMethods, where all of the flat API is exposed. It also has objects matching GDI+ objects. Among those are:

  • GraphicsPlus
  • ImagePlus
  • BitmapPlus
  • GraphicsPath
  • BrushPlus and its derivative classes:
    • SolidBrushPlus
    • HatchBrush
    • LinearGradientBrush
    • PathGradientBrush
    • TextureBrushPlus
  • PenPlus
  • RegionPlus

Drawing with GDI+

All drawing in GDI+ is done using GraphicsPlus object, similar to how in .NET all drawing is done using Graphics object. In order to obtain GraphicsPlus object an appropriate constructor needs to be used. For example to draw inside OnPaint override (or wherever .NET Graphics object is available), one would use a constructor that takes HDC:

        protected override void OnPaint(PaintEventArgs e)

        {

            IntPtr hdc = e.Graphics.GetHdc();

            using(GraphicsPlus g = new GraphicsPlus(hdc))

                PaintControl(g);

            e.Graphics.ReleaseHdc(hdc);

        }

 

If the drawing target is an off-screen bitmap, then there is a choice of creating a .NET Graphics object on it followed by the above, or using Bitmap.GetHbitmap() and then constructing GraphicsPlus object on HBITMAP. There are some other choices, but mostly of limited use.

While its desktop peer supports many settings, the Windows Mobile version of Graphics object supports only one – smoothing mode. It can be sent to None, Antialias, High Speed and High Quality. Naturally, antialised output takes the longest time to render.

Brushes

Brush objects in GDI+ can be used to draw directly on the screen by filling various shapes as well as to create pens that use brush textures to fill the line. Below are several brush examples:

BrushDemo.png

In order to create the above brushes the following code was used:

  1. PathGradient brush
                // Create rectangular path
                GraphicsPath path = new GraphicsPath(FillMode.FillModeAlternate);
                path.AddRectangle(new GpRectF( 0, 0, ClientRectangle.Width, 
                    ClientRectangle.Height / 5));
                
                // Create rectangular gradient brush
                // with red in center and black in the corners
                brPathGrad = new PathGradientBrush(path);
                brPathGrad.SetCenterColor(Color.Red);
                int count = 2;
                brPathGrad.SetSurroundColors(new Color[] { Color.Black, Color.Black }, 
                    ref count);
  2. Solid Brush
                brSolid = new SolidBrushPlus(Color.CornflowerBlue);
  3.  Hatch Brush
                brHatch = new HatchBrush(HatchStyle.HatchStyle25Percent, 
                    Color.Black, Color.White);
  4. Linear Gradient
                brLinGrad = new LinearGradientBrush(new GpPointF(0, 0), 
                    new GpPointF(50, 50), Color.Black, Color.White);
  5. Texture brush
                StreamOnFile sf = new StreamOnFile(bitmapPath);
                ImagePlus img = new ImagePlus(sf, false);
                brTexture = new TextureBrushPlus(img, WrapMode.WrapModeTile);

 

Pens

Pens in GDI+ support thickness, transparency, antialiasing, custom caps, and some other features. In addition a pen can be created solid, hatched and generally based on any brush one can create. Using pens it is possible to draw lines, rectangles, ellipses, beziers and otherwise random paths.

Pens support start and end caps. Caps can be predefined or entirely custom, based on a path object.

Below is a sample of the output from various pens used under various conditions:

PenDemo.png

Here is how each pen has been created and used:

  1.  Solid with caps. Standard caps are used – round and arrow
                brSolid = new SolidBrushPlus(Color.CornflowerBlue);
                penSolid = new PenPlus(Color.Red, 10);
                penSolid.SetEndCap(LineCap.LineCapRound);
                penSolid.SetStartCap(LineCap.LineCapArrowAnchor);
  2.  Solid with caps and antialiasing. This one is the same as before except it is drawn with antialiasing
                g.SetSmoothingMode(SmoothingMode.SmoothingModeAntiAlias);
                penSolid.SetColor(Color.Blue);
                g.DrawLine(penSolid, 5, rcf.Top + 10, rc.Width - 10, rcf.Top + 10);
  3. Hatched (25%)
                brHatch = new HatchBrush(HatchStyle.HatchStyle25Percent, 
                    Color.Black, Color.White);
                penHatch = new PenPlus(brHatch, 10);
  4. Solid with transparency
                penSolidTrans = new PenPlus(Color.FromArgb(-0x5f7f7f7f), 10);
  5. Custom cap. The custom cap has been created out of a path object consisting of a single ellipse
                penSolidCustomCap = new PenPlus(Color.Black, 20);
                GraphicsPath path = new GraphicsPath(FillMode.FillModeAlternate);
                path.AddEllipse(-0.5f, -1.5f, 1, 3);
                CustomLineCap cap = new CustomLineCap(null,path, LineCap.LineCapFlat, 0);
                penSolidCustomCap.SetCustomEndCap(cap); 
  6. Dash
                penDash = new PenPlus(Color.Black, 5);
                penDash.SetDashStyle(DashStyle.DashStyleDot);
  7. Gradient brush-based

            brGrad = new LinearGradientBrush(

                new GpPointF(0, 0), new GpPointF(100, 100),

                Color.Black, Color.White);

            penGradient = new PenPlus(brGrad, 30);

 


 

Demo application

This whitepaper includes a demo application. The application demonstrates the above techniques as well as shows how to use GDI+ to capture ink with smoothing and antialiasing.

Main.png

 

Conclusion

GDI+ is available on modern Windows Mobile platform that support stylus input. It allows creating graphic applications that are hard or impossible to implement otherwise. Using GDI+ in conjunction with Compact .NET Framework allows a developer to create a rich graphic application without expending substantial effort.

Comments

 

tbmvp said:

Really cool.

November 1, 2007 6:31 AM
 

Diesel said:

When I try to open the source code on Visual Studio 2008 Beta 2,  I'm getting the following warning "Solution file can not be converted because it can not be modified.  To convert the solution, change the permissions on the solution file to allow modification  and re-open it."  Could anyone convert the solution to VS 2008 and re-post?  Thank you.

November 2, 2007 10:37 PM
 

?? said:

GDI ?Windows?????????????????????????GDI ?GDI(?????Windows????GraphicsDeviceInterface)????...

November 5, 2007 12:32 PM
 

?? said:

GDI ? Windows ?????????????????????????.NET Framework ???????? GDI ????,? .NET Compact Framework ????? GDI ???,??? .NET Compact Framework ??????? GDI ?????????

November 5, 2007 8:57 PM
 

Synced said:

Great article!

I am working on a XAML reader/renderer for simple visuals and timeline animation. I have been looking for a good API to use along with Winforms to render XAML in Winforms. I think this will suite me well.

How would I implement gradients which have multiple stops defined? Would I simply render multiple gradients?

Also XAML allows gradient start/end/stop values to have an alpha value. Can I render via this API a gradient that say goes from 0-100% alpha?

Thanks and take care.

November 15, 2007 1:02 PM
 

mind_the_gap said:

Thank you, great article!

One thing that is bad about the Windows Mobile GDI+ that it seems (at least for me) that some simple funtions like

DrawLines() or GraphicsPath.AddLines() are not implemented :(

March 26, 2008 11:07 AM
 

theblueeyz said:

This is very nice, only I'm running into an odd problem I can't seem to find ANY information on:

Periodically when I close the sample application, I get a Native Exception thrown as the app closes.  It occurs AFTER the Main() function exits - stopping the debugger just before the function exits, and then continuing, will expose when the error occurs.

This is the only information the exception gives me:

ExceptionCode: 0x0000005 (Google reveals that this is the Access Violation code)

ExceptionAddress: 0xffffcbc0 (always the same)

Reading: 0x001745bc (this value changes from run to run)

This suggests an error in one of the P/Invokes, or maybe a GDI object isn't being released.  I've spent some time going through the code, but there's simply so much of it that I don't know where to start.

Any ideas?

May 1, 2008 2:15 PM
 

theblueeyz said:

Ok, after several painstaking hours of testing every possible combination of operations in extreme detail, this particular problem was very simple:

In the sample application's OnMouseUp handler, the path variable is added to a collection and then the reference is assigned to a new instance of GraphicsPath - orphaning the reference for the old path.  Its reference now exists only as an item in the array it was added to.

When the application is closed, the items in that array are not disposed.  Simply adding a loop in the Closing handler on the main form to dispose each of the GraphicsPaths in the allPaths variable eliminates the crash.

For what it's worth, I came upon this because I've decided to go ahead and use this in my application (in fact it's the only way - several things I need to do REQUIRE transparency and that is impossible in GDI).  I kept running into a crash (which as it happens, was unrelated to this issue, but examining this helped me track it down) but this has been very valuable, because it's forced me to learn exactly how this undocumented library works.

Alex - is it ok if I put my work up on CodeProject, keeping of course the OpenNETCF copyright notices?  I've added complete Matrix support since none of the built-in methods are implemented, I've cleaned up the code (I observe that much of it is swiped from Mono :) ), and I have also weeded out many of the functions that are not implemented and replaced them with workarounds where possible.

That or, can I provide it to you perhaps for inclusion in the SDF?

May 1, 2008 4:53 PM
 

alexfeinman said:

Blueeyz, could you drop me an email at alexfeinman AT hotmail?

May 28, 2008 9:37 PM
 

TriPhone Blog said:

Recent Posts fixmystreet. com fixed my street! Twitter What puzzles me… A History of Mobile Phones Zattoo Recent Comments alex on fixmystreet. com fixed my street! Twitter at sionide. net on ShoZu Simon on What puzzles me… Simon on Walking Hot Spot xMachina

June 12, 2008 8:26 AM
 

smokiejim said:

Does enyone know how to make a form (semi)transparent??

July 26, 2008 7:15 AM
 

Beat Generator « Wireless Heart Monitor said:

Pingback from  Beat Generator « Wireless Heart Monitor

October 5, 2008 3:22 PM
 

Mark Arteaga said:

October 14, 2008 9:47 PM
 

CoCo said:

how can i create a BitmapPlus with a certein size?

I tried following and got always exceptions:

BitmapPlus offScreen = new BitmapPlus(this.ClientRectangle.Width, this.ClientRectangle.Height, System.Drawing.Imaging.PixelFormat.Format16bppRgb555);

Adding following results in 0:

MessageBox.Show(offScreenPlus.GetWidth().ToString());

So i'm not sure if i'm doing something wrong or this isn't supposed to work...

October 29, 2008 3:05 PM
 

GDI+ am CompactFramework | LieberLieber Software TeamBlog said:

Pingback from  GDI+ am CompactFramework | LieberLieber Software TeamBlog

November 21, 2008 7:14 AM
 

daniels said:

Hi

I added rounded rectangle support. using stuff found on code Project: www.codeproject.com/.../ExtendedGraphics.aspx

I posted Code Snippets in our Blog:

blog.lieberlieber.com/.../gdi-am-compactframework

November 21, 2008 7:21 AM
 

HamishAhern said:

do you have a WinCE5 replacement for gdiplus? or a full system.drawing class implementation for CF.NET ?

January 14, 2009 2:28 AM
 

HamishAhern said:

where can I download a full gdiplus.dll for ARM, i.e not a dll that has had its entry points hardcoded to XIP rom?

January 14, 2009 2:32 AM
 

GDI+ Library usage on WinCE5.0 for Smart Device Application | keyongtech said:

Pingback from  GDI+ Library usage on WinCE5.0 for Smart Device Application | keyongtech

January 18, 2009 10:50 AM
 

Can't include gdiplus.h | keyongtech said:

Pingback from  Can't include gdiplus.h | keyongtech

February 3, 2009 4:10 PM
 

Al_buruj said:

hi All, did anybody does GDIPlus for windows mobile project on C++?  I have tried using library from www.ernzo.com/libgdiplus.aspx . and fortunately, i still havent found a way even to produce a single dot using GDIPlus. : )

June 23, 2009 2:40 AM
 

GDI+ on Windows Mobile sample project « IT Blog said:

Pingback from  GDI+ on Windows Mobile sample project «  IT Blog

June 27, 2009 10:51 AM
 

Subquery.net » Windows Forms Controls for Windows Mobile – Useful Resources said:

Pingback from  Subquery.net » Windows Forms Controls for Windows Mobile – Useful Resources

August 23, 2009 6:36 PM
 

李森 - listen said:

September 3, 2009 7:01 AM
 

twitter secrets said:

“ I think it’ s the now, it’ s the future, it’ s business development,” said Joyce Snell of Salem, founder of Professional Career Solutions in Boston. “ From a career development point of view, it’ s important.”

September 9, 2009 11:43 PM
 

PNG Alpha transparent vs Sprites said:

Pingback from  PNG Alpha transparent vs Sprites

October 3, 2009 3:09 AM
 

Subquery.net » Windows Forms Controls for Windows Mobile ??? Useful Resources said:

Pingback from  Subquery.net » Windows Forms Controls for Windows Mobile ??? Useful Resources

October 29, 2009 11:29 PM
 

VIP ?????????????? » ???????????? ?????????????????? «Cap-O-Matic. ????????: ???????????? said:

Pingback from  VIP ?????????????? » ???????????? ?????????????????? «Cap-O-Matic. ????????: ????????????

February 24, 2010 9:47 PM
 

600sel Boiler Order, 600sel Headlight Online said:

Pingback from  600sel Boiler Order, 600sel Headlight Online

May 20, 2010 2:51 PM
 

Lexus Lx450 Radiator Partstrain, Lx450 Repair Extensive said:

Pingback from  Lexus Lx450 Radiator Partstrain, Lx450 Repair Extensive

May 21, 2010 2:59 AM
 

2009 Avalanche 2500 Chevrolet Silverado Transmission, 2001 Chevy Avalanche 2500 said:

Pingback from  2009 Avalanche 2500 Chevrolet Silverado Transmission, 2001 Chevy Avalanche 2500

May 21, 2010 3:59 AM
 

Used Geico Freightliner Trucks For Sale, Freightliner Kit Announce said:

Pingback from  Used Geico Freightliner Trucks For Sale, Freightliner Kit Announce

May 21, 2010 4:56 AM
 

Classified Our Used Oldsmobile Achieva, Information Achieva said:

Pingback from  Classified Our Used Oldsmobile Achieva, Information Achieva

May 21, 2010 4:58 AM
 

2009 Hyundai Accent Fuel Economy Information, Tucson Mirror Aftermarket Parts Hyundai Xg300 said:

Pingback from  2009 Hyundai Accent Fuel Economy Information, Tucson Mirror Aftermarket Parts Hyundai Xg300

May 21, 2010 6:12 AM
 

2005 Honda Element Green, Ventlock Tailgate Lock Honda Element said:

Pingback from  2005 Honda Element Green, Ventlock Tailgate Lock Honda Element

May 21, 2010 1:43 PM
 

Corrado Radiator Behr Beetle Cabrio, Buy Corrado Car Volkswagen Tiguan said:

Pingback from  Corrado Radiator Behr Beetle Cabrio, Buy Corrado Car Volkswagen Tiguan

May 22, 2010 12:14 AM
 

Nissan Sale Micra K11, 1999 Sentra Sun Visor Nissan Xterra said:

Pingback from  Nissan Sale Micra K11, 1999 Sentra Sun Visor Nissan Xterra

May 22, 2010 4:14 AM
 

Bell Ezee Slimming, 1 Central Heating Kuiper Belt said:

Pingback from  Bell Ezee Slimming, 1 Central Heating Kuiper Belt

May 22, 2010 11:20 AM
 

Astre New York Restaurant, 1973 Pontiac Astre Safari Wagon said:

Pingback from  Astre New York Restaurant, 1973 Pontiac Astre Safari Wagon

May 22, 2010 3:05 PM
 

Requisiti Vista Ultimate, Comet Download Windows Vista said:

Pingback from  Requisiti Vista Ultimate, Comet Download Windows Vista

May 22, 2010 4:34 PM
 

Used 1995 Oldsmobile Aurora, Oldsmobile Aurora Aftermarket Parts Catalytic Converters said:

Pingback from  Used 1995 Oldsmobile Aurora, Oldsmobile Aurora Aftermarket Parts Catalytic Converters

May 22, 2010 4:37 PM
 

Ford Country Squire Used Motor, Country Catering Santa Barbara said:

Pingback from  Ford Country Squire Used Motor, Country Catering Santa Barbara

May 22, 2010 7:50 PM
 

Radiator Achieva Cutlass Ciera Oldsmobile Firenza, Movie Firenza said:

Pingback from  Radiator Achieva Cutlass Ciera Oldsmobile Firenza, Movie Firenza

May 22, 2010 8:12 PM
 

Discount Car Parts Saturn Relay 2 Floor Mats, 6 Pin Relay said:

Pingback from  Discount Car Parts Saturn Relay 2 Floor Mats, 6 Pin Relay

May 22, 2010 8:29 PM
 

Rd400 Discount Kose, B D400 B B Dell B Laptop Battery Intel 855gm said:

Pingback from  Rd400 Discount Kose, B D400 B B Dell B Laptop Battery Intel 855gm

May 22, 2010 10:01 PM
 

Volvo S80 Sunroof Parts, Thrift Volvo S80 said:

Pingback from  Volvo S80 Sunroof Parts, Thrift Volvo S80

May 22, 2010 10:30 PM
 

Honda Shadow Spirit 750 Hypercharger, Spirit Parts Cruiser Customizing - 387.1fh.org said:

Pingback from  Honda Shadow Spirit 750 Hypercharger, Spirit Parts Cruiser Customizing - 387.1fh.org

May 23, 2010 12:30 AM
 

Pb200 Sale Price, Pb200 Zone Designed - 370.myipgirl.com said:

Pingback from  Pb200 Sale Price, Pb200 Zone Designed - 370.myipgirl.com

May 23, 2010 1:52 AM
 

Pb300 Sale Now Glass Container Grinder, Pb300 Low Shipping - 285.dlmreza.net said:

Pingback from  Pb300 Sale Now Glass Container Grinder, Pb300 Low Shipping - 285.dlmreza.net

May 23, 2010 2:39 AM
 

P35 P3500 Van Coolant Core Size, 2007 Chevy Silverado 3500 For Sale - 412.ja3ra.com said:

Pingback from  P35 P3500 Van Coolant Core Size, 2007 Chevy Silverado 3500 For Sale - 412.ja3ra.com

May 23, 2010 1:59 PM
 

Legacy Pliskin Trilogy Part 2 Faq Hidden Object Games, Legacy Hospital Partners Portneuf - 120.animejin.com said:

Pingback from  Legacy Pliskin Trilogy Part 2 Faq Hidden Object Games, Legacy Hospital Partners Portneuf - 120.animejin.com

May 24, 2010 5:24 AM
 

Shadow Spirit Radiator Cover Honda Vt750, Dodge Spirit Plymouth Reliant - 212.ja3ra.com said:

Pingback from  Shadow Spirit Radiator Cover Honda Vt750, Dodge Spirit Plymouth Reliant - 212.ja3ra.com

May 24, 2010 9:35 AM
 

Blue Book Value 2001 Volvo S40, 760 Gle Sale Volvo Xc70 - 311.1fh.org said:

Pingback from  Blue Book Value 2001 Volvo S40, 760 Gle Sale Volvo Xc70 - 311.1fh.org

May 24, 2010 10:24 AM
 

Aparat Fuji J10 Finepix S5700, 1978 Jeep J10 Used Parts Grand Wagoneer - 403.ja3ra.com said:

Pingback from  Aparat Fuji J10 Finepix S5700, 1978 Jeep J10 Used Parts Grand Wagoneer - 403.ja3ra.com

May 24, 2010 11:37 AM
 

Mercedes Benz 300se Sale Bugatti, 1988 300sel 1971 Mercedes Benz - 208.luna-atra.net said:

Pingback from  Mercedes Benz 300se Sale Bugatti, 1988 300sel 1971 Mercedes Benz - 208.luna-atra.net

May 24, 2010 12:28 PM
 

Aftermarket Acura Tsx Parts Selection, Acura Tsx Water - 198.mfbattle.com said:

Pingback from  Aftermarket Acura Tsx Parts Selection, Acura Tsx Water - 198.mfbattle.com

May 24, 2010 12:32 PM
 

Parts 1989 Plymouth Sundance Custom Bumper Cover, Sundance Sale Boots Classic Cardy Ugg Bailey Button Black - 259.tvshowzone.com said:

Pingback from  Parts 1989 Plymouth Sundance Custom Bumper Cover, Sundance Sale Boots Classic Cardy Ugg Bailey Button Black - 259.tvshowzone.com

May 24, 2010 12:48 PM
 

Mazda Navajo Problems Fuel Pump, Navajo Aftermarket Auto Parts Mazda Rx3 - 132.dlmreza.net said:

Pingback from  Mazda Navajo Problems Fuel Pump, Navajo Aftermarket Auto Parts Mazda Rx3 - 132.dlmreza.net

May 24, 2010 4:07 PM
 

1999 Mercedes Benz Cl500 Cl55 Amg, Mercedes Benz Ml 2006 Cl55 Amg - 4.luna-atra.net said:

Pingback from  1999 Mercedes Benz Cl500 Cl55 Amg, Mercedes Benz Ml 2006 Cl55 Amg - 4.luna-atra.net

May 24, 2010 4:48 PM
 

Trailduster Wamp, 79 Plymouth Duster Slant Six - 391.akemet.com said:

Pingback from  Trailduster Wamp, 79 Plymouth Duster Slant Six - 391.akemet.com

May 24, 2010 5:14 PM
 

1969 C 10 1968 Chevy C10, Chevrolet C10 Pickup Parts - 319.1fh.org said:

Pingback from  1969 C 10 1968 Chevy C10, Chevrolet C10 Pickup Parts - 319.1fh.org

May 24, 2010 7:54 PM
 

Ford F53 Oem Parts Brake Pads, Used F53 Spare Tire Carrier - 209.ja3ra.com said:

Pingback from  Ford F53 Oem Parts Brake Pads, Used F53 Spare Tire Carrier - 209.ja3ra.com

May 24, 2010 8:02 PM
 

Ml63 Amg Movie Brake, Ml63 Amg Diagram Wiring Child Restraint - 81.mfbattle.com said:

Pingback from  Ml63 Amg Movie Brake, Ml63 Amg Diagram Wiring Child Restraint - 81.mfbattle.com

May 25, 2010 12:56 AM
 

Used Sony Ericsson W350a Walkman, Liberar Sony Ericsson W350 Por Imei - 432.luna-atra.net said:

Pingback from  Used Sony Ericsson W350a Walkman, Liberar Sony Ericsson W350 Por Imei - 432.luna-atra.net

May 25, 2010 1:15 AM
 

Used Lincoln Mkx Atlanta Jacky Jones, Mkx Sell - 205.defutbolazo.com said:

Pingback from  Used Lincoln Mkx Atlanta Jacky Jones, Mkx Sell - 205.defutbolazo.com

May 25, 2010 2:51 AM
 

Headlight 2003 Lexus Ls430 Daytime Running Lights Disc Brakes, Antenna Lexus Gs430 - 71.jordanbrandallamerican.com said:

Pingback from  Headlight 2003 Lexus Ls430 Daytime Running Lights Disc Brakes, Antenna Lexus Gs430 - 71.jordanbrandallamerican.com

May 25, 2010 3:23 AM
 

Sienna Dodge Caravan, Dodge Colt Pictures Wagon - 339.dlmreza.net said:

Pingback from  Sienna Dodge Caravan, Dodge Colt Pictures Wagon - 339.dlmreza.net

May 25, 2010 4:16 AM
 

2001 Volkswagen Jetta Manual Gti, 2001 Volkswagen Jetta Review Expert - 249.jordanbrandallamerican.com said:

Pingback from  2001 Volkswagen Jetta Manual Gti, 2001 Volkswagen Jetta Review Expert - 249.jordanbrandallamerican.com

May 25, 2010 12:43 PM
 

P25 P2500 Vin Boiler L6, P250 Heater Rtd Pt100 - 8.codebluehacks.org said:

Pingback from  P25 P2500 Vin Boiler L6, P250 Heater Rtd Pt100 - 8.codebluehacks.org

May 25, 2010 12:58 PM
 

Davis Vantage Vue Frequency Hopping Spread Spectrum, Spectrum Help - 316.jeepsunlimted.com said:

Pingback from  Davis Vantage Vue Frequency Hopping Spread Spectrum, Spectrum Help - 316.jeepsunlimted.com

May 25, 2010 1:48 PM
 

P20 Box, P2015 Aftermarket - 240.computeronlinebingo.com said:

Pingback from  P20 Box, P2015 Aftermarket - 240.computeronlinebingo.com

May 25, 2010 2:17 PM
 

Gs450h Heater Auto Parts, Gs450h Bulb Fit - 92.codebluehacks.org said:

Pingback from  Gs450h Heater Auto Parts, Gs450h Bulb Fit - 92.codebluehacks.org

May 25, 2010 2:38 PM
 

Models Chevrolet Express 2500 Rear Wheel Drive, American Express Hannover - 282.unlockiphone30.net said:

Pingback from  Models Chevrolet Express 2500 Rear Wheel Drive, American Express Hannover - 282.unlockiphone30.net

May 25, 2010 3:58 PM
 

W150 Part Ram 4500 Grand Caravan St Regis, Frigidaire Wfw9450ww - 427.renters.ws said:

Pingback from  W150 Part Ram 4500 Grand Caravan St Regis, Frigidaire Wfw9450ww - 427.renters.ws

May 25, 2010 4:25 PM
 

2000 Volvo S70 Abs Light, 2nd S70 Used Volvo Xc70 - 23.1fh.org said:

Pingback from  2000 Volvo S70 Abs Light, 2nd S70 Used Volvo Xc70 - 23.1fh.org

May 25, 2010 9:16 PM
 

Ford F 500 Bulb Halogen, V1500 Play Plug - 215.binggreen.com said:

Pingback from  Ford F 500 Bulb Halogen, V1500 Play Plug - 215.binggreen.com

May 25, 2010 10:04 PM
 

2000 - 1996 @ Timer Renos Tahoe, Blazer Radiator Chevrolet Tahoe - 170.dlmreza.net said:

Pingback from  2000 - 1996 @ Timer Renos Tahoe, Blazer Radiator Chevrolet Tahoe - 170.dlmreza.net

May 27, 2010 6:33 AM
 

2000 - 1991 @ Rio5 Oe Replacement Kia Magentis, Homes For Sale In El Paso Tx San Elizario - 473.luna-atra.net said:

Pingback from  2000 - 1991 @ Rio5 Oe Replacement Kia Magentis, Homes For Sale In El Paso Tx San Elizario - 473.luna-atra.net

May 27, 2010 7:42 AM
 

1995 - 1997 @ Buy Mercedes Benz R63 Amg Automatic Transmission Wheel, R63 Amg Maintenance Class - 132.tvshowzone.com said:

Pingback from  1995 - 1997 @ Buy Mercedes Benz R63 Amg Automatic Transmission Wheel, R63 Amg Maintenance Class - 132.tvshowzone.com

May 30, 2010 9:32 PM
 

1994 - 2004 @ Precession Equinoxes Christianity, Equinox Door Product Description Replacement Headlight - 74.dlmreza.net said:

Pingback from  1994 - 2004 @ Precession Equinoxes Christianity, Equinox Door Product Description Replacement Headlight - 74.dlmreza.net

May 31, 2010 1:17 AM
 

2005 - 1992 @ Tribute Adoption, 2003 Mazda Tribute Lx Reviews - 30.animejin.com said:

Pingback from  2005 - 1992 @ Tribute Adoption, 2003 Mazda Tribute Lx Reviews - 30.animejin.com

May 31, 2010 1:20 AM
 

1996 - 1985 @ Ford E 450 Super Duty Buy Replacement Tail Light, C40 C4500 Pickup Wholesale - 54.tgrconversions.com said:

Pingback from  1996 - 1985 @ Ford E 450 Super Duty Buy Replacement Tail Light, C40 C4500 Pickup Wholesale - 54.tgrconversions.com

May 31, 2010 2:35 AM
 

1989 - 1988 @ 300sd Discount C36 Amg C43 Amg C320, C36 Amg Aftermarket Car 2008 Mercedes Benz - 382.1fh.org said:

Pingback from  1989 - 1988 @ 300sd Discount C36 Amg C43 Amg C320, C36 Amg Aftermarket Car 2008 Mercedes Benz - 382.1fh.org

May 31, 2010 2:58 AM
 

1990 - 2007 @ 1997 Camaro Supercharger, Camaro Free Classified - 447.unlockiphone30.net said:

Pingback from  1990 - 2007 @ 1997 Camaro Supercharger, Camaro Free Classified - 447.unlockiphone30.net

May 31, 2010 1:37 PM
 

2008 - 1990 @ 1jz Cressida Drifting, Toyota Cressida Problems Highlander Hybrid - 342.computeronlinebingo.com said:

Pingback from  2008 - 1990 @ 1jz Cressida Drifting, Toyota Cressida Problems Highlander Hybrid - 342.computeronlinebingo.com

May 31, 2010 2:29 PM
 

2000 - 1995 @ Seville Girl Cadillac Catera, Allante Boiler Cadillac Catera - 405.myipgirl.com said:

Pingback from  2000 - 1995 @ Seville Girl Cadillac Catera, Allante Boiler Cadillac Catera - 405.myipgirl.com

May 31, 2010 3:18 PM
 

Bookmarks for August 23rd through September 1st | Stuff.za.net said:

Pingback from  Bookmarks for August 23rd through September 1st | Stuff.za.net

September 1, 2010 3:19 AM
 

[C# .NET CF] Abgerundete Buttons mit Farbverlauf - Forum Fachinformatiker.de said:

Pingback from  [C# .NET CF] Abgerundete Buttons mit Farbverlauf - Forum Fachinformatiker.de

September 16, 2010 2:27 AM
 

Useful Links for .NET Compact Framework & Windows CE & Windows Mobile | Warren Tang's Blog said:

Pingback from  Useful Links for .NET Compact Framework & Windows CE & Windows Mobile | Warren Tang's Blog

January 11, 2011 10:58 AM