¡¡¡¡GDI+ÊÇÔWindows GDIµÄÀ©Õ¹£¬Ôö¼ÓÁËй¦Äܲ¢¶ÔÔ¹¦ÄÜÄ£¿é½øÐÐÁËÓÅ»¯£¬Ê¹±à³ÌÈËÔ±¸üÒ×ʵÏÖ¶àÖָ߼¶¹¦ÄÜ¡£ÒòGDI+µÄÇ¿´ó¹¦Äܼ°ÆäÍêÃÀµÄÐÔÄÜ£¬Î¢Èí³«µ¼ÐÂÓ¦ÓóÌÐòµÄ¿ª·¢»ùÓÚGDI+½øÐС£
¡¡¡¡Ëùν·¾¶£¬ÊÇÖ¸¿ÉÒÔ±»Ìî³äµÄ¡¢»³öÂÖÀª»òͬʱ±»»³öÂÖÀª²¢Ìî³äµÄÒ»¸ö»ò¶à¸öͼÐΡ£Â·¾¶µÄÒýÈ룬´ó´óµØ·á¸»ÁËWindowsµÄͼÐι¦ÄÜ£¬Ê¹µÃÓ¦ÓóÌÐò¿ÉÒÔ·½±ãµØ½¨Á¢¸´ÔÓÇøÓò£¬»æÖƺÍÌî³ä²»¹æÔòͼÐΡ£
¡¡¡¡Â·¾¶Ò»°ãÓÉÒÔÏÂÔªËØ×é³É£ºÖ±Ïß¡¢¾ØÐΡ¢ÍÖÔ²¡¢Ô²»¡¡¢¶à±ßÐΡ¢Èý´ÎÑùÌõºÍ±´Èû¶ûÇúÏß¡£ÔÚGDI+ÖУ¬¼¸ºÎÏßÌõµÄ´¦ÀíÖ÷ÒªÊÇͨ¹ýµ÷ÓÃͼÐη¾¶£¨GraphicsPath£©µÄ·½·¨À´ÊµÏֵġ£Ê¹ÓÃGraphicsPath¶ÔÏó¿ÉÒÔ½«ÕâÐ©ÔªËØÊÕ¼¯µ½Ò»¸öµ¥ÔªÖС£ÒÔºóÖ»Ðèµ÷ÓÃGraphicsÀàµÄDrawPath·½·¨£¬¾Í¿ÉÒÔÒ»´Î»æÖƳö¸Ã¶ÔÏóÊÕ¼¯µÄÈ«²¿ÔªËØÐòÁС£
¡¡¡¡±à³Ì·½·¨ÓëʵÀý
¡¡¡¡1¡¢×¼±¸¹¤×÷
¡¡¡¡Ê¹ÓÃGDI+±à³Ì£¬±ØÐë°üº¬gdiplus.hÍ·Îļþ£¬ÒªÊ¹ÓÃGdiplusÃû³Æ¿Õ¼ä£¬Á¬½ÓʱÐèÒªGdiplus.lib¡£Ê¹ÓÃGDI+»æÖƶÔÏóʱÐèÒª»ñȡһ¸öÉ豸ÃèÊö±í¾ä±ú£¬°ÑËü×÷Ϊ²ÎÊý´«µÝ¸øGraphicsµÄ¹¹Ô캯Êý£¬ÕâÑù¾Í¿ÉÒÔʹÓÃGraphics¶ÔÏóµÄ¿âº¯ÊýÁË¡£
¡¡¡¡Ê¹ÓÃGDI+±à³Ì±ØÐëÔÚ´´½¨GDI+¶ÔÏóǰִÐÐGdiplusStartupʵÏÖ³õʼ»¯£¬ÔÚ³ÌÐò½áÊøÊ±µ÷ÓÃGdiplusShutdown¹Ø±ÕGDI+¹¦ÄÜ£¬ÇåÀíÕ¼ÓõÄ×ÊÔ´¡£Á½×麯ÊýÒª³É¶Ôµ÷Óá£
¡¡¡¡Ê¾Àý´úÂëÈçÏÂËùʾ£º
| //---------------------------ÔÚstdafx.hÎļþÖÐ-----------------------------------// #include "Gdiplus.h" using namespace Gdiplus ; #pragma comment (lib, "Gdiplus.lib") //----------------------ÔÚÓ¦ÓóÌÐòÀàµÄInitInstanceº¯ÊýÖÐ-----------------------// GdiplusStartupInput gdiplusStartupInput ; GdiplusStartup (&m_GdiplusToken, &gdiplusStartupInput, NULL) ; //-----------------------ÔÚÓ¦ÓóÌÐòÀàµÄExitInstanceº¯ÊýÖÐ---------------------// GdiplusShutdown (m_GdiplusToken) ; |
¡¡¡¡×¢£ºÆäÖбäÁ¿m_GdiplusTokenÓ¦¸ÃÊÇULONG_PTRÀàÐ͵ÄÈ«¾Ö±äÁ¿£¬»òÕßÊÇÓ¦ÓóÌÐòÀàµÄ³ÉÔ±±äÁ¿
¡¡¡¡2¡¢Â·¾¶µÄ´´½¨
¡¡¡¡GraphicsPathÀàÌṩÁËÐí¶à´´½¨Â·¾¶ÔªËصĽӿڣºAddArc£¨Ô²»¡£©¡¢AddBezier£¨±´Èû¶ûÇúÏߣ©¡¢AddBeziers£¨±´Èû¶ûÇúÏßÐòÁУ©¡¢AddClosedCurve£¨±ÕºÏµÄ»ùÊýÑùÌõÇúÏߣ©¡¢AddCurve£¨»ùÊýÑùÌõÇúÏߣ©¡¢AddEllipse£¨ÍÖÔ²£©¡¢AddLine£¨Ö±Ï߶Σ©¡¢AddLines£¨Ö±Ïß¶ÎÐòÁУ©¡¢AddPie£¨ÉÈÐΣ©¡¢AddPolygon£¨¶à±ßÐΣ©¡¢AddRectangle£¨¾ØÐΣ©¡¢AddRectangles£¨¾ØÐÎÐòÁУ©ºÍAddString£¨×Ö·û´®ÂÖÀªÂ·¾¶£©¡£
![]() ͼ1 MSDNÖÐÌṩµÄ·¾¶µÄÀý×Ó |
¡¡¡¡3¡¢×Ó·¾¶µÄÌí¼ÓºÍÌáÈ¡
¡¡¡¡GraphicsPath»¹¿ÉÒÔ°üº¬¶à¸öͼÐΣ¬ÆäÖÐÿһ¸öͼÐα»³ÆÎª×Ó·¾¶£¨figures£©¡£Èç¹ûÔÚGraphicsPath¶ÔÏóÖÐʹÓÃÁËStartFigure»òCloseFigureº¯Êý£¬ÔÚÕâÁ½¸öÖ®ºó¶Ô·¾¶ËùÌí¼ÓµÄÏßÌõ¶¼½«¹¹³ÉÒ»¸öµÄ×Ó·¾¶¡£[5]ÕâÁ½¸öº¯ÊýµÄÇø±ðÊÇ£¬StartFigure·½·¨²»±ÕºÏµ±Ç°Í¼Ðμ´¿ªÊ¼Ò»¸öÐÂͼÐΣ¬¶øCloseFigure·½·¨±ÕºÏµ±Ç°Í¼Ðβ¢¿ªÊ¼ÐµÄͼÐΡ£
¡¡¡¡ÏÂÃæÁ½¶ÎʾÀý´úÂëÔÚ·¾¶ÖÐÌí¼ÓÁËÁ½¸öÌõ·¾¶£¬Ç°Ò»Ìõ×Ó·¾¶ÓÉÁ½ÌõÖ±Ïß¶Î×é³É£¬ºóÒ»Ìõ×Ó·¾¶ÊÇÒ»¸öÔ²ÐΡ£Á½¶Î´úÂ벻ͬµÄµØ·½½ö½öÔÚÓÚStartFigureºÍCloseFigureº¯ÊýµÄʹÓã¬Òò¶øËüÃǵÄЧ¹ûÒ²²»Ïàͬ£¬Èçͼ2ºÍͼ3Ëùʾ¡£
| //ʾÀý´úÂë1----ʹÓÃStartFigure GraphicsPath path; path.AddLine(100,100,100,150); path.AddLine(100,150,150,150); path.StartFigure(); path.AddEllipse(75,75,50,50); Graphics g(hdc); g.DrawPath(&Pen(Color::Black,1),&path); //ʾÀý´úÂë2----ʹÓÃCloseFigure GraphicsPath path; path.AddLine(100,100,100,150); path.AddLine(100,150,150,150); path.CloseFigure(); path.AddEllipse(75,75,50,50); Graphics g(hdc); g.DrawPath(&Pen(Color::Black,1),&path); |
![]() ͼ2¡¡StartFigureЧ¹û ![]() ͼ3¡¡CloseFigureЧ¹û |
¡¡¡¡GDI+µÄGraphicsPathIteratorÀàÍê³ÉÁ˶Ô·¾¶µÄÒ»¸ö»ò¶à¸ö×Ó·¾¶µÄÃèÊö¡¢¹ÜÀí¡¢²âÊԵȹ¦ÄÜ¡£GraphicsPathIteratorÄܹ»´Ó¸ø¶¨µÄ·¾¶ÖнøÐжàÖÖÓë×Ó·¾¶Ïà¹ØµÄ²Ù×÷¡£
¡¡¡¡±í1¡¡GraphicsPathIteratorÀà³£ÓóÉÔ±º¯Êý
| ³£ÓóÉÔ±º¯Êý | ¹¦ÄÜÃèÊö |
| HasCurve | ָʾÓë´ËGraphicsPathIterator¶ÔÏó¹ØÁªµÄ·¾¶ÊÇ·ñ°üº¬ÇúÏß |
| NextSubpath | ½«´Ë×Ó·¾¶ÒƵ½Ö¸¶¨µÄGraphicsPath¶ÔÏóÖеÄÏÂÒ»×Ó·¾¶ |
| Rewind | ½«´ËGraphicsPathIterator¶ÔÏóÖØÈÆµ½Æä¹ØÁªÂ·¾¶µÄÆðʼ´¦ |
| GetSubpathCount | »ñȡ·¾¶ÖÐ×Ó·¾¶µÄÊýÄ¿ |




