Posted 29 October 2013 - 12:46 PM
GDI is certainly an option. The API is mature and has aged well since it was introduced thirty years ago.
With the latest few rounds of Windows some features have lost hardware acceleration. If you happen to be throwing around tens of thousands of sprites at once (which is NOT recommended, keep that number to a few hundred at most) then GDI may have some CPU-bound performance concerns.
GDI was semi-replaced by GDI+ a decade ago. Microsoft would prefer if you don't use the original GDI any more but there is so much legacy code that they cannot drop support for it. GDI+ has many features like transparency, antialiasing, and more modern compressed image formats.
There are many newer technologies available that offer newer features and are easier to use. For example, if you are working only with GDI you will likely find yourself spending untold hours manipulating images at a low level, decoding graphics files, working with bitmap parameters, and doing lower-level bit-twiddling that could have been avoided by using newer systems that operate at a higher level.
If you are using C# or managed C++ you will likely discover that the .net framework's graphics libraries are extremely easy to use. They use GDI+ internally and also add a large collection of additional utility features.
Another option, the one that Microsoft currently recommends, is to use Direct2D for advanced 2D graphics. It was part of the DirectX suite, earlier called DirectDraw. Most 3D games rely on its components as 'surfaces', giving things like a Direct Draw Surface and the various DDS image file formats. Some nice things about Direct2D are that is is hardware accelerated through the DirectX drivers, and that it manages to work well with GDI, GDI+, WDM, and various other Windows rendering systems. You can mix and match a surface with a GDI device context with very little transition code.
As for your desire to not ship with DirectX redistributables, that is not really an issue any more. DirectX is no longer an independent component, it has been integrated into the Windows SDK. DirectX 10 was part of Vista. DirectX 11was part of Windows 7 and Vista SP2, DirectX 11.1 was part of Windows 8. DirectX 11.2 is part of Windows 8.1. Microsoft announced years ago that they will not back-port new versions of DirectX to old versions of Windows. It is now just another part of the operating system, not a separate component.