I Am looking for a good program to make graphics for 2d games. I have a lot if experience with adobe after effects but want to expand and make some game graphics for my friend who programs c# with a xna framework. Any suggestions for a good program?
The free and open source alternatives to Photoshop and Illustrator are Gimp and Inkscape, respectively. While Adobe has introduced some flexible payment options, their cost can be prohibitive to the non-pirating hobbyist or independent developer.
Don't overlook Paint.NET on Windows; it's actually pretty capable as an image editor.
I would recommend learning Illustrator and Photoshop for 2d work. Illustrator is a vector graphics program and will produce very small and infinitely scalable art work as the graphics are defined as line and curve strokes with various different types of fills. I believe XNA has vector graphic support. This would mean that the resolution could effectively scale without having to have different assets at each level. Also, if you need to move beyond what can be done with vector graphics, you can bring them over to Photoshop and do raster (typically what you think of as a picture) work with them in a format that supports alpha channel (for example TGA).
After Effects isn't really practical for 2D asset creation for games as it is a video compositing tool. It would be very useful for cut-scenes though.
I'm not too familiar with XNA, or graphics for games in general, but judging by this, After Effects is probably a good fit, probably in combination with Photoshop.