the beginning of gidplus
2006-09-20 17:33
323 查看
Introduction
If you did a GDI+ sample query on Google, I bet you will get hundreds or thousands of URLs pointing you to a .NET free code. If you go book shop you will see dozens of books talking about GDI+. However, if you try to find information about integrating GDI+ with MFC/ATL/WTL, I bet you will find none (if you could, kindly post the URL!). So, is it impossible or so difficult that it doesn't worth using?Findings
The answer is: Extremely easy to use GDI+ in MFC/ATL/WTL, or even straight C language. First, I have to admit I have no knowledge about .NET, I am not a fan of Microsoft .NET but rather prefer platform SDK. GDI+ IS NOT solely for .NET, if you plan to use GDI+ on Windows version lower than XP, then you would have to redistribute the GDI+ runtime (here). Don't worry, it is only 1.04 MB, not a xx MB .NET runtime.So?
Add the following line to your stdafx.h#include <gdiplus.h> using namespace Gdiplus; #pragma comment(lib, "gdiplus.lib")
Intialize the GDI+ resources. Add this to your
CWinAppderived class as member:
GdiplusStartupInput gdiplusStartupInput; ULONG_PTR gdiplusToken;
At
InitInstance(), add:
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
Your application is ready to consume GDI+ now.
Upon exit, release GDI+ resources. Add the following line to
ExitInstance():
GdiplusShutdown(gdiplusToken);
As you can see, it is that simple. In general, it should be very easy to port your existing WIN32/MFC/WTL painting code into GDI+. If you ask why? Consider there is one GDI+ C++ class called
RedEyeCorrection, that's right, to correct the red eyes that sometimes occur in flash photographs. If you have at least one year WIN32/MFC experiences, just follow the link here to see more.
I included a demo project to demonstrate the above. Enjoy!
GDI+ is device context handle centric, hence if you can split drawing logic aside from actual drawing code, you will have no problem in porting to GDI+. In some cases, 100 lines of drawing code can be reduced to just 5 lines with GDI+ intensive support of complex drawing exercises. This means mixing ordinary GDI with GDI+ a trivial task.
The downloaded project is a standard MFC SDI project, if you have read it (I hope so...), you will find that it is unbelievable simple. Nearly all time, you can simply cut-n-paste source code embedded in MSDN GDI+ to try things out. One tips: if the GDI+ need to load an external file, you can just right click the image in the help and save it, then continue to use the downloaded project to continue testing.
Finally, you do need to have a copy of platform SDK to have necessary GDI+ header, library at your VC search path. It is not necessary for the latest version, I am using version Aug'02. GDI+ files can be extracted from CAB_11, if you do not want to install the SDK.
** Don't forget to visit here for more information on integrating GDI+ with Win32/MFC/ATL/WTL **
相关文章推荐
- the table of the escape sequences.(C++ primer plus)
- To find names containing exactly five characters, use “^”and “$”to match the beginning and end of the name, and five instances of “.”in between: mysql
- the beginning of learning struts
- my ubuntu - the beginning of free source
- Swap kth element from the beginning and kth element from the end of linked list -- Amazon
- 程序员之殇 —— (The Beginning of the End)噩梦、崩坏
- [zz]Why does the compiler generate a MOV EDI, EDI instruction at the beginning of functions?
- The beginning of C#, sieve the primes!
- SOAPpy安装错误SyntaxError: from __future__ imports must occur at the beginning of the file原因
- To love oneself is the beginning of a lifelong romance. —Oscar Wilde
- For Beginning of the Life of Knowledge Sharing
- from __future__ imports must occur at the beginning of the file问题解决
- 【XML码农】【Error】The XML declaration may only appear at the very beginning of the document.
- The beginning of My blog
- The price of Large C plus
- The Promise of a New Beginning
- The beginning of my way of the programing
- The Beginning of CRC Project
- Twice the sum of your integers plus 7 is...
- Beginning the life of my CSDN blogs