2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
#7:¶à±ßÐβüôËã·¨
ʵÑéÄ¿µÄ
1. ÊìÁ·ÕÆÎÕ×ø±êϵ¿ò¼ÜºÍ³ÌÐò¿ò¼Ü
2. ¸ø³ö Sutherland-Hodgeman Ëã·¨µÄ³ÌÐòʵÏÖ
ʵÑéÄÚÈÝ
1. ±à³ÌʵÏÖ Sutherland-Hodgeman Ëã·¨
2. ¼ÙÉè²Ã¼ô¾ØÐδ°¿ÚµÄ×óÉϽǺÍÓÒϽÇ×ø±ê·Ö±ðΪ(70,400)ºÍ(500,60);±»²Ã¼ô¶à±ßÐÎ
µÄ¶¥µãÐòÁÐΪ{(10, 280), (320, 450), (500, 260), (420, 10), (280, 100), (180, 40)}¡£Ê¹ÓÃÀ¶ É«»æÖƲüôÇ°µÄ¶à±ßÐΣ¬Ê¹ÓúìÉ«Ìî³ä²Ã¼ôºóµÄ¶à±ßÐΣ¬Ê¹ÓÃÂÌÉ«»æÖƲüô´°¿Ú¡£
±³¾°ÖªÊ¶
1. Sutherland-Hodgeman ¶à±ßÐβüôËã·¨Ö÷¿òͼ
59
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
2. ʹÓòüô´°¿ÚijÌõ±ß²Ã¼ô¶à±ßÐεĿòͼ
½¨Òé²½Öè
1. ÔÚ#6 ʵÑ齨Á¢µÄ¡°²Ã¼ô¡±²Ëµ¥ÖÐÌí¼Ó ¡°¶à±ßÐβüô¡±Ïî¡£
2. Ϊ¹¤³ÌÌí¼ÓÒ»¸ö¶Ô»°¿ò£¬¶Ô»°¿òÖпÉÒÔÊäÈëÖ±Ï߶εÄÁ½¸ö¶ËµãºÍ²Ã¼ô´°¿Ú²ÎÊý;
3. Ϊ¶Ô»°¿ò·Ö±ð¹ØÁªÒ»¸öÀàÀ´¿ØÖƶԻ°¿ò£¬²¢¹ØÁªºÃ±à¼¿òÊäÈëÖµºÍ³ÌÐò²ÎÊýµÄ¹Øϵ;
4. Ôڲ˵¥Ïî¹ØÁªµÄÏûÏ¢Ó³É亯ÊýÖÐÍê³ÉÒÔϹ¦ÄÜ:
1) ´ò¿ª¶Ô»°¿òÊäÈë²ÎÊý 60
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
2) ²ÎÊý´«Ë͸ø CChildView ÀàµÄÏà¹Ø±äÁ¿ 3) ÉèÖÃͼÐαê¼Ç±äÁ¿
4) ÖØ»»²¼
5. ÔÚ OnDraw()º¯ÊýÖнøÐÐÇåÆÁ¡¢×ø±êÖá»æÖƺ͸ù¾ÝͼÐαê¼Ç±äÁ¿À´»æÖƲüôÇ°ºóµÄÖ± Ï߶Ρ£
ÌرðÌáʾ
1. ʹÓÃÀ¶É«»æÖƲüôÇ°¶à±ßÐΣ¬Ê¹ÓúìÉ«Ìî³ä²Ã¼ôºó¶à±ßÐΣ¬Ê¹ÓÃÂÌÉ«»æÖƲüô´°¿Ú; 2. Ëã·¨Öк¯Êý VS=getVertexs()µÄ¹¦ÄÜÊÇ»ñµÃ¶à±ßÐεĶ¥µãÐòÁУ¬Çë×ÔÐÐÉè¼Æ¡£
61
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
¸½Â¼:¶à±ßÐβüôËã·¨²Î¿¼
²Î¿¼½çÃæÒ»
Ò»¡¢À©Õ¹ÏîÄ¿ 17000001_06 ±¾´Î×÷Òµ²»ÐèҪн¨ÏîÄ¿£¬¿ÉÒÔÔÚÉÏÒ»´Î×÷ÒµÏîÄ¿µÄ»ù´¡ÉϽøÐÐÀ©Õ¹¡£
¶þ¡¢Ìí¼Ó²Ëµ¥
6) ´ò¿ªÏîÄ¿µÄ×ÊÔ´ÊÓͼ£¬Îª²Ëµ¥Ïî¡°¶à±ßÐβüô¡±Ìí¼ÓÏàÓ¦µÄÏìÓ¦º¯Êý¡£ ²Ù×÷·½·¨:ÔÚ¡°¶à±ßÐβüô¡±²Ëµ¥ÏîÉÏÓÒ¼ü£¬Ñ¡Ôñ¡°Ìí¼Óʼþ´¦Àí³ÌÐò¡±¡£
7) ÉèÖÃÏìÓ¦º¯ÊýµÄº¯ÊýÃû£¬ÒÔ¼°ËùÊôµÄÀà¡£ÈçÏÂͼËùʾ:
8) ´Ëʱ£¬ÔÚ view ÀàÄÚ£¬ÒѾÌí¼ÓÁ˴˲˵¥µÄÏìÓ¦º¯Êý¡£ ³ÌÐòÔËÐк󣬵¥»÷¡°¶à±ßÐβüô¡±²Ëµ¥Ïî´¥·¢µÄ¹¦ÄÜ£¬Ôڴ˺¯ÊýÄÚʵÏÖ¡£
62
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
Èý¡¢Ìí¼ÓжԻ°¿ò
6) ´ò¿ª¡°×ÊÔ´ÊÓͼ¡±£¬ÔÚ¡°Dialog¡±ÉÏÓÒ¼ü£¬Ñ¡Ôñ¡°²åÈë Dialog¡±¡£
7) Ñ¡ÖÐвåÈëµÄ¶Ô»°¿ò£¬Ð޸ġ°ÊôÐÔ´°¿Ú¡±Öеġ°Caption¡±ÊôÐÔ£¬ÉèÖöԻ°¿òµÄ
±êÌâ:¶à±ßÐβüô¡£
8) ÔÚ¶Ô»°¿òÖУ¬Ìí¼Ó¿Ø¼þ£¬ÉèÖýçÃæÈçÏÂ:
ΪÁËʹÓ÷½±ã£¬ÎÒÃÇÉèÖÃÈý¸ö°´Å¥ºÍÁбí¿Ø¼þµÄ ID Öµ·Ö±ðΪ:IDC_ADD¡¢ IDC_MODIFY¡¢IDC_DELETE¡¢IDC_POINTLIST¡£
9) Ë«»÷¶Ô»°¿òµÄ¿Õ°×λÖã¬Îª¶Ô»°¿òÉèÖÃÀàÃû¡°PolygonClippingDlg¡±¡£
10) ·µ»Ø¡°×ÊÔ´ÊÓͼ¡±£¬Îª¶Ô»°¿òÖеĿؼþÌí¼Ó¹ØÁª±äÁ¿¡£
¸÷¿Ø¼þµÄ¹ØÁª±äÁ¿ÈçϱíËùʾ¡£
×óÉϽÇ×ø±ê
m_minX
±à¼¿òµÄ¹Ø
m_maxY
ÓÒϽÇ×ø±ê
m_maxX
Áª±äÁ¿
m_minY
¶à±ßÐζ¥µã
m_x
m_y
°´Å¥µÄ¹ØÁª ±äÁ¿
¡°Ð޸ġ±°´Å¥
m_update
¡°É¾³ý¡±°´Å¥
m_delete
Áбí¿Ø¼þµÄ¹ØÁª±äÁ¿
m_pointList
ΪÁ˼Ǽ¶Ô»°¿òÄÚ¶à±ßÐεĶ¥µã¸öÊýºÍÿ¸ö¶¥µãµÄ×ø±ê£¬ÔÚ ¡°PolygonClippingDlg.h¡±ÎļþÄÚ£¬Îª¶Ô»°¿òÀàÊÖ¶¯Ìí¼Ó³ÉÔ±±äÁ¿ÈçÏÂ:
63
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
//¶¥µã¸öÊý
int m_verNum;
//¶¥µãÐÅÏ¢ vector
ΪÁËʹÓà vector À࣬¼ÇµÃ¼ÓÈëÍ·Îļþ:
ÔÚ¡°PolygonClippingDlg.cpp¡±µÄ¹¹Ô캯ÊýÄÚ£¬½« m_verNum ³õʼ»¯Îª 0¡£
11) ÉèÖÃÁбí¿Ø¼þµÄÊôÐÔ¡£
ΪÁËÍêÕûµÄÏÔʾºóÐø¼ÓÈëÁбí¿Ø¼þµÄÊý¾Ý£¬½«Áбí¿Ø¼þµÄ¡°View¡±ÊôÐÔÉèÖÃΪ Report¡£ ºóÐøÐÞ¸ÄÁбíÖеÄÊý¾Ýʱ£¬ÐèҪѡÔñÊý¾ÝËùÔÚµÄÐС£ÎªÁËÇåÎúµÄ¿´³öµ±Ç°Ñ¡ÖÐ µÄÐУ¬½«Áбí¿Ø¼þµÄ¡°Always Show Selection¡±ÊôÐÔÉèÖÃΪ True¡£
12) ÖØд³õʼ»¯º¯Êý£¬Íê³É¶Ô»°¿òµÄ³õʼ»¯¡£ ¶Ô»°¿òÏÔʾºó£¬»áÊ×ÏÈ×Ô¶¯µ÷Óóõʼ»¯º¯Êý£¬Íê³É¶Ô»°¿òµÄ³õʼ»¯¹¤×÷¡£ ÖØд³õʼ»¯º¯ÊýµÄ²Ù×÷²½Öè:½øÈë¡°ÀàÊÓͼ¡±£¬Ñ¡ÖжԻ°¿òÀà¡°PolygonClippingDlg¡±£¬ ÔÚ¡°ÊôÐÔ´°¿Ú¡±ÖÐÑ¡Ôñ¡°ÖØд¡±±êÖ¾¡£ ÕÒµ½¡°OnInitDialog¡±º¯Êý£¬½øÐÐÖØд¡£Íê³É¹¦ÄÜ:¶Ô»°¿ò×î³õÏÔʾʱ£¬¡°ÁÐ±í ¿Ø¼þ¡±¾ßÓÐÁбêÌ⣬²¢ÉèÖá°Ð޸ġ±ºÍ¡°É¾³ý¡±°´Å¥²»¿ÉÓá£
¾ßÌå´úÂëÈçÏÂ:
13) ¡°Ìí¼Ó¡±°´Å¥µÄʼþ´¦Àí³ÌÐò¡£ 64
#include
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
½øÈë¡°×ÊÔ´ÊÓͼ¡±£¬Ë«»÷¡°Ìí¼Ó¡±°´Å¥¡£±à¼Æ÷»á×Ô¶¯Ìí¼Ó´Ë°´Å¥µÄʼþ´¦Àí
º¯Êý¡£ÔÚ´¦Àíº¯ÊýÄÚ£¬Ìí¼ÓÐèÒªµÄ¹¦ÄÜ:½«±à¼¿òÄڵĶ¥µã×ø±ê¼ÓÈëÁбí¿ò¡£
14) ±à¼¡°Áбí¿Ø¼þ¡±ÖеÄÐÅÏ¢¡£
¹¦ÄÜ:µ±µ¥»÷¡°Áбí¿Ø¼þ¡±ÖеÄijÐÐʱ£¬½«´ËÐеÄ×ø±êÔٴδæÈ붥µã±à¼¿ò£¬ ½øÐб༣¬È»ºóµ¥»÷¡°Ð޸ġ±»ò¡°É¾³ý¡±°´Å¥£¬Íê³É´Ë¶¥µãÐÅÏ¢µÄ¸üС£ Ê×ÏÈ£¬ÐèҪΪ¡°Áбí¿Ø¼þ¡±Ìí¼Óµ¥»÷ʼþ¡£½øÈë¡°×ÊÔ´ÊÓͼ¡±£¬ÔÚ¡°Áбí¿Ø¼þ¡± ÉÏÓÒ¼ü£¬Ñ¡Ôñ¡°ÀàÏòµ¼¡±¡£
ÔÚ¡°ÀàÏòµ¼¡±Ò³ÃæÖУ¬ÕÒµ½¡°Áбí¿Ø¼þ¡±µÄ ID ºÅ£¬ÔÚ¡°ÏûÏ¢¡±ÖУ¬Ñ¡Ôñµ¥»÷Ê ¼þ¡°NM_CLICK¡±£¬È»ºóµ¥»÷¡°Ìí¼Ó´¦Àí³ÌÐò¡±¡£ ʹÓÃĬÈϺ¯ÊýÃû¼´¿É¡£È»ºó£¬µ¥»÷¡°ÀàÏòµ¼¡±Öеġ°±à¼´úÂ롱£¬½øÈëµ¥»÷¡°ÁÐ ±í¿Ø¼þ¡±Ê±´¥·¢µÄº¯Êý¡£Ôڴ˺¯ÊýÄÚ£¬Íê³É¹¦ÄÜ:½«ÁбíÖÐÑ¡ÖÐÐеÄÊý¾Ý£¬ÏÔ Ê¾µ½¶¥µã±à¼¿ò£¬Í¬Ê±£¬¡°Ð޸ġ±ºÍ¡°É¾³ý¡±°´Å¥»Ö¸´¿ÉÓá£
15) ¡°Ð޸ġ±°´Å¥µÄʼþ´¦Àí³ÌÐò¡£ ½øÈë¡°×ÊÔ´ÊÓͼ¡±£¬Ë«»÷¡°Ð޸ġ±°´Å¥¡£±à¼Æ÷»á×Ô¶¯Ìí¼Ó´Ë°´Å¥µÄʼþ´¦Àí º¯Êý¡£ÔÚ´¦Àíº¯ÊýÄÚ£¬Ìí¼ÓÐèÒªµÄ¹¦ÄÜ:Óñ༿òÄÚÐ޸ĺóµÄ¶¥µã×ø±ê£¬¸üРÁбí¿òÖб»Ñ¡ÖÐÐеÄÐÅÏ¢£¬Ð޸ĺóÔÙ´ÎÉèÖá°Ð޸ġ±ºÍ¡°É¾³ý¡±°´Å¥²»¿ÉÓá£
16) ¡°É¾³ý¡±°´Å¥µÄʼþ´¦Àí³ÌÐò¡£ ½øÈë¡°×ÊÔ´ÊÓͼ¡±£¬Ë«»÷¡°É¾³ý¡±°´Å¥¡£±à¼Æ÷»á×Ô¶¯Ìí¼Ó´Ë°´Å¥µÄʼþ´¦Àí º¯Êý¡£ÔÚ´¦Àíº¯ÊýÄÚ£¬Ìí¼ÓÐèÒªµÄ¹¦ÄÜ:½«Áбí¿òÖб»Ñ¡ÖÐÐеĶ¥µãÐÅϢɾ³ý¡£
17) ¡°È·¶¨¡±°´Å¥µÄʼþ´¦Àí³ÌÐò¡£ ½øÈë¡°×ÊÔ´ÊÓͼ¡±£¬Ë«»÷¡°È·¶¨¡±°´Å¥¡£±à¼Æ÷»á×Ô¶¯Ìí¼Ó´Ë°´Å¥µÄʼþ´¦Àí º¯Êý¡£ÔÚ´¦Àíº¯ÊýÄÚ£¬Ìí¼ÓÐèÒªµÄ¹¦ÄÜ:½«¡°Áбí¿Ø¼þ¡±ÖеÄËùÓж¥µãÐÅÏ¢£¬ ´æÈë±äÁ¿ m_vertices¡£
ÖÁ´Ë£¬ÐÂÔö¶Ô»°¿òÄÚµÄËùÓвÙ×÷Íê±Ï¡£
ËÄ¡¢½¨Á¢¶à±ßÐβüôÀà PolygonClipping
6) ÔÚÏîÄ¿Ãû³ÆÉÏÓÒ¼üÑ¡Ôñ¡°Ìí¼Ó¡±->¡°Àࡱ¡£
7) Ñ¡Ôñ C++Àà¡£
8) ÉèÖÃÀàÃû:PolygonClipping¡£
9) Ϊ PolygonClipping ÀàÌí¼Ó¶à±ßÐβüôÐèÒªµÄ³ÉÔ±ÊôÐԺͷ½·¨¡£ÈçÏÂËùʾ:
65
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
10) ÓÉѧÉú×Ô¼º°´ÕÕ¿ÎÌÃÖн²½âµÄ²½Ö裬ÔÚPolygonClipping.cppÖÐÍê³É Sutherland-Hodgeman Ëã·¨¡£
66
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
Î塢ʹÓòüôËã·¨Àà PolygonClipping ºÍ¶Ô»°¿òÀà PolygonClippingDlg
5) ½¨ºÃ PolygonClipping Ààºó£¬ÔÚÇ°Ãæ²Ù×÷¹ýµÄ view ÊÓͼÀàÄÚ£¬Ìí¼Ó PolygonClipping ÀàÐ͵ijÉÔ±ÊôÐÔ£¬ÓÃÀ´´æ´¢²Ã¼ôËã·¨ÐèÒªµÄÊý¾Ý¡£ÎªÁ˶Աȣ¬½«Ç°ÃæÉÏ´Î×÷Òµ ÖеÄÖ±Ï߶βüô³ÉÔ±Ãû¸Ä³É¡°lineClip¡±¡£
6) ÔÚ view ÀàµÄ cpp ÎļþÄÚÒýÈë PolygonClippingDlg ÀàµÄÍ·Îļþ£¬Îª²úÉúÏàÓ¦µÄ¶Ô »°¿ò×ö×¼±¸¡£
7) ½øÈëÇ°Ãæ¡°¶à±ßÐβüô¡±²Ëµ¥ÏîµÄÏìÓ¦º¯Êý£¬¼´ view ÀàµÄ OnPolygonClipping º¯Êý£¬Íê³É²Ëµ¥ÏîµÄÏûÏ¢´¦Àí³ÌÐò¡£
Ê×ÏÈ£¬ÔÚº¯ÊýÄÚÉú³É¶Ô»°¿òÀà PolygonClippingDlg µÄ¾ßÌå¶ÔÏ󣬲¢ÏÔʾ¸Ã¶Ô»°¿ò¡£ µ±¶Ô»°¿òÄÚµÄÊý¾ÝÌîÈëÍê±Ïºó£¬µã»÷¡°È·¶¨¡±»ò¡°È¡Ïû¡±°´Å¥£¬¹Ø±Õ¶Ô»°¿ò£¬ »Øµ½´Ëº¯Êý¡£Í¨¹ý DoModal()º¯ÊýµÄ·µ»ØÖµ£¬¿ÉÒÔÅжÏÓû§¹Ø±Õ¶Ô»°¿òʱ£¬µ¥
67
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
»÷µÄÊÇ¡°È·¶¨¡±°´Å¥£¬»¹ÊÇ¡°È¡Ïû¡±°´Å¥¡£Èôµ¥»÷µÄÊÇ¡°È·¶¨¡±°´Å¥£¬Ôò»ñÈ¡ Óû§ÊäÈëµÄÊý¾Ý¡£
view ÀàµÄ OnPolygonClipping º¯Êý×îÖÕ´úÂëÈçÏÂ:
8) ÿ´ÎˢнçÃæºó£¬»á×Ô¶¯µ÷Óà view ÀàµÄ OnDraw º¯Êý£¬ÏÂÃæÎÒÃDZ༠OnDraw º¯Êý¡£
Ê×ÏÈ£¬½«²ÎÊý pDC µÄ×¢ÊÍ´ò¿ª¡£È»ºó£¬ÉèÖÃÐèÒªµÄ×ø±êϵ£¬×îºó£¬µ÷Óà PolygonClippingDlg Àà¶ÔÏóÍê³É¶à±ßÐβüô¡£ ÓÉÓÚ´ËʱÕû¸öÏîÄ¿Óжà¸ö²Ëµ¥Ïîʼþ´¥·¢£¬ÎªÁ˱êÃ÷µ±Ç°´¥·¢µÄÊÇÄĸöʼþ£¬ Ϊ view ÀàÔö¼ÓÒ»¸öÕûÐ͵ijÉÔ±ÊôÐÔ m_type£¬³õʼ»¯Îª 0¡£µ÷Óá°Ö±Ï߶βüô¡± ʱ£¬m_type=1£¬µ÷Óá°¶à±ßÐβüô¡±Ê±£¬m_type=2¡£È»ºóÔÚ OnDraw º¯ÊýÄÚ½ø ÐÐÅжϣ¬µ÷Óò»Í¬µÄ¹¦ÄÜ¡£
68
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
ÖÁ´Ë£¬Ö»ÐèͬѧÃÇÍê³É PolygonClipping ÀàÄÚµÄ Sutherland-Hodgeman Ëã·¨:void SutherlandHodgemanClipper(CDC *pDC);
È«²¿²Ù×÷Íê³É£¬ÏÂÃæÊÇÔËÐÐЧ¹û¡£
Áù¡¢²âÊÔ
¼ÙÉè²Ã¼ô¾ØÐδ°¿ÚµÄ×óÉϽǺÍÓÒϽÇ×ø±ê·Ö±ðΪ(70,400)ºÍ(500,60)¡£Ê¹ÓÃÀ¶É«
»æÖƲüôÇ°µÄ¶à±ßÐΣ¬Ê¹ÓúìÉ«Ìî³ä²Ã¼ôºóµÄ¶à±ßÐΣ¬Ê¹ÓÃÂÌÉ«»æÖƲüô´°¿Ú¡£ 4) Êý¾Ý:±»²Ã¼ô¶à±ßÐεĶ¥µãÐòÁÐΪ{(10, 280), (320, 450), (500, 260), (420, 10),
(280, 100), (180, 40)}¡£ ÊäÈë´°¿ÚºÍÖ±Ï߶εÄÊý¾Ý£¬ÈçÏÂËùʾ:
69
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
ÔËÐнá¹û:
Æß¡¢²¹³ä˵Ã÷
ÈçºÎÅжÏÒ»¸öµãÔڲüô´°¿ÚÄÚ»òÍâ?
70
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
Ìáʾ:ÓÉÓڲüô´°¿ÚµÄ¶¥µãºÍ±»²Ã¼ô¶à±ßÐεĶ¥µã¶¼ÊÇ°´Ë³Ê±Õë·½ÏòÊäÈ룬¿É ÒÔʹÓÃÏòÁ¿µÄ²æ³ËÔËËã(²»Êǵã³Ë)£¬Æä½á¹ûÊÇÒ»¸öÏòÁ¿£¬¸ù¾Ý´ËÏòÁ¿µÄ·½Ïò£¬ ÅжϵãÔڲüô´°¿ÚµÄÄÚ»òÍâ(¡°ÓÒÊÖ·¨Ôò¡±)¡£
71
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
²Î¿¼½çÃæ¶þ
Ò»¡¢À©Õ¹ÏîÄ¿ 17000001_06 ±¾´Î×÷Òµ²»ÐèҪн¨ÏîÄ¿£¬¿ÉÒÔÔÚÉÏÒ»´Î×÷ÒµÏîÄ¿µÄ»ù´¡ÉϽøÐÐÀ©Õ¹¡£
¶þ¡¢Ìí¼Ó²Ëµ¥
1) ´ò¿ªÏîÄ¿µÄ×ÊÔ´ÊÓͼ£¬Îª²Ëµ¥Ïî¡°¶à±ßÐβüô¡±Ìí¼ÓÏàÓ¦µÄÏìÓ¦º¯Êý¡£ ²Ù×÷·½·¨:ÔÚ¡°¶à±ßÐβüô¡±²Ëµ¥ÏîÉÏÓÒ¼ü£¬Ñ¡Ôñ¡°Ìí¼Óʼþ´¦Àí³ÌÐò¡±¡£
2) ÉèÖÃÏìÓ¦º¯ÊýµÄº¯ÊýÃû£¬ÒÔ¼°ËùÊôµÄÀà¡£ÈçÏÂͼËùʾ:
3) ´Ëʱ£¬ÔÚ view ÀàÄÚ£¬ÒѾÌí¼ÓÁ˴˲˵¥µÄÏìÓ¦º¯Êý¡£ ³ÌÐòÔËÐк󣬵¥»÷¡°¶à±ßÐβüô¡±²Ëµ¥Ïî´¥·¢µÄ¹¦ÄÜ£¬Ôڴ˺¯ÊýÄÚʵÏÖ¡£
Èý¡¢Ìí¼ÓжԻ°¿ò
1) ´ò¿ª¡°×ÊÔ´ÊÓͼ¡±£¬ÔÚ¡°Dialog¡±ÉÏÓÒ¼ü£¬Ñ¡Ôñ¡°²åÈë Dialog¡±¡£ 72
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
2) Ñ¡ÖÐвåÈëµÄ¶Ô»°¿ò£¬Ð޸ġ°ÊôÐÔ´°¿Ú¡±Öеġ°Caption¡±ÊôÐÔ£¬ÉèÖöԻ°¿òµÄ ±êÌâ:¶à±ßÐβüô¡£
3) ÔÚ¶Ô»°¿òÖУ¬Ìí¼Ó¿Ø¼þ£¬ÉèÖýçÃæÈçÏÂ:
ΪÁËʹÓ÷½±ã£¬ÎÒÃÇÉèÖÿؼþµÄ ID ÖµÈçÏÂ:
¿Ø¼þÀàÐÍ
ID Öµ
±à¼¿ò
ºá×ø±ê
IDC_EDITX
×Ý×ø±ê
IDC_EDITY
°´Å¥
Ìí¼Ó
IDC_ADD
ÐÞ¸Ä
IDC_MODIFY
ɾ³ý
IDC_DELETE
¼ÓÈë²Ã¼ô´°¿Ú
IDC_ADDCLIP
¼ÓÈë±»²Ã¼ô¶à±ßÐÎ
IDC_ADDCLIPPED
Áбí¿Ø¼þ
IDC_POINTLIST
²Ã¼ô´°¿ÚÁбí¿ò
IDC_CLIPLIST
±»²Ã¼ô¶à±ßÐÎÁбí¿ò
IDC_CLIPPEDLIST
4) Ë«»÷¶Ô»°¿òµÄ¿Õ°×λÖã¬Îª¶Ô»°¿òÉèÖÃÀàÃû¡°PolygonClippingDlg¡±¡£ 73
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
5) ·µ»Ø¡°×ÊÔ´ÊÓͼ¡±£¬Îª¶Ô»°¿òÖеĿؼþÌí¼Ó¹ØÁª±äÁ¿¡£ ¸÷¿Ø¼þµÄ¹ØÁª±äÁ¿ÈçϱíËùʾ¡£
¿Ø¼þÀàÐÍ
±äÁ¿Ãû
±äÁ¿Àà±ð
±à¼¿ò
ºá×ø±ê
m_x
Value
×Ý×ø±ê
m_y
Value
°´Å¥
ÐÞ¸Ä
m_update
Control
ɾ³ý
m_delete
Control
Áбí¿Ø¼þ
m_pointList
Control
²Ã¼ô´°¿ÚÁбí¿ò
m_clipList
Control
±»²Ã¼ô¶à±ßÐÎÁбí¿ò
m_clippedList
Control
ΪÁ˼ǼÁбí¿Ø¼þÄڵĶ¥µã¸öÊý£¬²Ã¼ô´°¿ÚµÄ¶¥µãÐÅÏ¢ºÍ±»²Ã¼ô¶à±ßÐεĶ¥µã ÐÅÏ¢£¬ÔÚ¡°PolygonClippingDlg.h¡±ÎļþÄÚ£¬Îª¶Ô»°¿òÀàÊÖ¶¯Ìí¼Ó³ÉÔ±±äÁ¿ÈçÏÂ:
//Áбí¿Ø¼þÄڵĶ¥µã¸öÊý int m_verNum;
//²Ã¼ô´°¿Ú¶¥µãÐÅÏ¢ vector
//±»²Ã¼ô¶à±ßÐζ¥µãÐÅÏ¢ vector
ΪÁËʹÓà vector À࣬¼ÇµÃ¼ÓÈëÍ·Îļþ:
ÔÚ¡°PolygonClippingDlg.cpp¡±µÄ¹¹Ô캯ÊýÄÚ£¬½« m_verNum ³õʼ»¯Îª 0¡£
6) ÉèÖÃÁбí¿Ø¼þµÄÊôÐÔ¡£
ΪÁËÍêÕûµÄÏÔʾºóÐø¼ÓÈëÁбí¿Ø¼þµÄÊý¾Ý£¬½«Áбí¿Ø¼þµÄ¡°View¡±ÊôÐÔÉèÖÃΪ Report¡£ ºóÐøÐÞ¸ÄÁбíÖеÄÊý¾Ýʱ£¬ÐèҪѡÔñÊý¾ÝËùÔÚµÄÐС£ÎªÁËÇåÎúµÄ¿´³öµ±Ç°Ñ¡ÖÐ µÄÐУ¬½«Áбí¿Ø¼þµÄ¡°Always Show Selection¡±ÊôÐÔÉèÖÃΪ True¡£
7) ÉèÖÃÁбí¿òµÄÊôÐÔ¡£ Áбí¿òÄÚµÄÐÅÏ¢£¬Ä¬ÈÏ»á¸ù¾ÝÖµ½øÐÐÅÅÐò¡£ÎªÁ˱£Ö¤°´¼ÓÈëµÄ˳ÐòÏÔʾ¶¥µãЊϢ£¬½«¡°²Ã¼ô´°¿ÚÁбí¿ò¡±ºÍ¡°±»²Ã¼ô¶à±ßÐÎÁбí¿ò¡±µÄ¡°Sort¡±ÊôÐÔÉèÖÃΪ False¡£
8) ÖØд³õʼ»¯º¯Êý£¬Íê³É¶Ô»°¿òµÄ³õʼ»¯¡£ ¶Ô»°¿òÏÔʾºó£¬»áÊ×ÏÈ×Ô¶¯µ÷Óóõʼ»¯º¯Êý£¬Íê³É¶Ô»°¿òµÄ³õʼ»¯¹¤×÷¡£
74
#include
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
ÖØд³õʼ»¯º¯ÊýµÄ²Ù×÷²½Öè:½øÈë¡°ÀàÊÓͼ¡±£¬Ñ¡ÖжԻ°¿òÀà¡°PolygonClippingDlg¡±£¬ ÔÚ¡°ÊôÐÔ´°¿Ú¡±ÖÐÑ¡Ôñ¡°ÖØд¡±±êÖ¾¡£ ÕÒµ½¡°OnInitDialog¡±º¯Êý£¬½øÐÐÖØд¡£Íê³É¹¦ÄÜ:¶Ô»°¿ò×î³õÏÔʾʱ£¬¡°ÁÐ±í ¿Ø¼þ¡±¾ßÓÐÁбêÌ⣬²¢ÉèÖá°Ð޸ġ±ºÍ¡°É¾³ý¡±°´Å¥²»¿ÉÓá£
¾ßÌå´úÂëÈçÏÂ:
9) ¡°Ìí¼Ó¡±°´Å¥µÄʼþ´¦Àí³ÌÐò¡£ ½øÈë¡°×ÊÔ´ÊÓͼ¡±£¬Ë«»÷¡°Ìí¼Ó¡±°´Å¥¡£±à¼Æ÷»á×Ô¶¯Ìí¼Ó´Ë°´Å¥µÄʼþ´¦Àí º¯Êý¡£ÔÚ´¦Àíº¯ÊýÄÚ£¬Ìí¼ÓÐèÒªµÄ¹¦ÄÜ:½«±à¼¿òÄڵĶ¥µã×ø±ê¼ÓÈëÁбí¿ò¡£
10) ±à¼¡°Áбí¿Ø¼þ¡±ÖеÄÐÅÏ¢¡£ ¹¦ÄÜ:µ±µ¥»÷¡°Áбí¿Ø¼þ¡±ÖеÄijÐÐʱ£¬½«´ËÐеÄ×ø±êÔٴδæÈ붥µã±à¼¿ò£¬ ½øÐб༣¬È»ºóµ¥»÷¡°Ð޸ġ±»ò¡°É¾³ý¡±°´Å¥£¬Íê³É´Ë¶¥µãÐÅÏ¢µÄ¸üС£ Ê×ÏÈ£¬ÐèҪΪ¡°Áбí¿Ø¼þ¡±Ìí¼Óµ¥»÷ʼþ¡£½øÈë¡°×ÊÔ´ÊÓͼ¡±£¬ÔÚ¡°Áбí¿Ø¼þ¡± ÉÏÓÒ¼ü£¬Ñ¡Ôñ¡°ÀàÏòµ¼¡±¡£
ÔÚ¡°ÀàÏòµ¼¡±Ò³ÃæÖУ¬ÕÒµ½¡°Áбí¿Ø¼þ¡±µÄ ID ºÅ£¬ÔÚ¡°ÏûÏ¢¡±ÖУ¬Ñ¡Ôñµ¥»÷Ê ¼þ¡°NM_CLICK¡±£¬È»ºóµ¥»÷¡°Ìí¼Ó´¦Àí³ÌÐò¡±¡£ ʹÓÃĬÈϺ¯ÊýÃû¼´¿É¡£È»ºó£¬µ¥»÷¡°ÀàÏòµ¼¡±Öеġ°±à¼´úÂ롱£¬½øÈëµ¥»÷¡°ÁÐ ±í¿Ø¼þ¡±Ê±´¥·¢µÄº¯Êý¡£Ôڴ˺¯ÊýÄÚ£¬Íê³É¹¦ÄÜ:½«ÁбíÖÐÑ¡ÖÐÐеÄÊý¾Ý£¬ÏÔ Ê¾µ½¶¥µã±à¼¿ò£¬Í¬Ê±£¬¡°Ð޸ġ±ºÍ¡°É¾³ý¡±°´Å¥»Ö¸´¿ÉÓá£
11) ¡°Ð޸ġ±°´Å¥µÄʼþ´¦Àí³ÌÐò¡£
75
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
½øÈë¡°×ÊÔ´ÊÓͼ¡±£¬Ë«»÷¡°Ð޸ġ±°´Å¥¡£±à¼Æ÷»á×Ô¶¯Ìí¼Ó´Ë°´Å¥µÄʼþ´¦Àí º¯Êý¡£ÔÚ´¦Àíº¯ÊýÄÚ£¬Ìí¼ÓÐèÒªµÄ¹¦ÄÜ:Óñ༿òÄÚÐ޸ĺóµÄ¶¥µã×ø±ê£¬¸üРÁбí¿òÖб»Ñ¡ÖÐÐеÄÐÅÏ¢£¬Ð޸ĺóÔÙ´ÎÉèÖá°Ð޸ġ±ºÍ¡°É¾³ý¡±°´Å¥²»¿ÉÓá£
12) ¡°É¾³ý¡±°´Å¥µÄʼþ´¦Àí³ÌÐò¡£ ½øÈë¡°×ÊÔ´ÊÓͼ¡±£¬Ë«»÷¡°É¾³ý¡±°´Å¥¡£±à¼Æ÷»á×Ô¶¯Ìí¼Ó´Ë°´Å¥µÄʼþ´¦Àí º¯Êý¡£ÔÚ´¦Àíº¯ÊýÄÚ£¬Ìí¼ÓÐèÒªµÄ¹¦ÄÜ:½«Áбí¿òÖб»Ñ¡ÖÐÐеĶ¥µãÐÅϢɾ³ý¡£
13) ¡°¼ÓÈë²Ã¼ô´°¿Ú¡±°´Å¥µÄʼþ´¦Àí³ÌÐò¡£ ½øÈë¡°×ÊÔ´ÊÓͼ¡±£¬Ë«»÷¡°¼ÓÈë²Ã¼ô´°¿Ú¡±°´Å¥¡£±à¼Æ÷»á×Ô¶¯Ìí¼Ó´Ë°´Å¥µÄ ʼþ´¦Àíº¯Êý¡£ÔÚ´¦Àíº¯ÊýÄÚ£¬Ìí¼ÓÐèÒªµÄ¹¦ÄÜ:1¡¢½«Áбí¿Ø¼þÖеĶ¥µãЊϢ£¬ÏÔʾÔÚ¡°²Ã¼ô´°¿Ú¶¥µã¡±µÄÁбí¿ò£¬²¢½«´ËÁбí¿òÖÐÒÔÇ°µÄÐÅϢɾ³ý¡£2¡¢ Áбí¿Ø¼þÇå¿Õ¡£ 3¡¢½«²Ã¼ô´°¿Ú¶¥µãÐÅÏ¢´æÈë m_verClip¡£
¾ßÌå´úÂëÈçÏÂ:
14) ¡°¼ÓÈë±»²Ã¼ô¶à±ßÐΡ±°´Å¥µÄʼþ´¦Àí³ÌÐò¡£ ½øÈë¡°×ÊÔ´ÊÓͼ¡±£¬Ë«»÷¡°¼ÓÈë±»²Ã¼ô¶à±ßÐΡ±°´Å¥¡£±à¼Æ÷»á×Ô¶¯Ìí¼Ó´Ë°´ Å¥µÄʼþ´¦Àíº¯Êý¡£ÔÚ´¦Àíº¯ÊýÄÚ£¬Ìí¼ÓÐèÒªµÄ¹¦ÄÜ:1¡¢½«Áбí¿Ø¼þÖеĶ¥ µãÐÅÏ¢£¬ÏÔʾÔÚ¡°±»²Ã¼ô¶à±ßÐζ¥µã¡±µÄÁбí¿ò£¬²¢½«´ËÁбí¿òÖÐÒÔÇ°µÄÐÅÏ¢ ɾ³ý¡£2¡¢Áбí¿Ø¼þÇå¿Õ¡£ 3¡¢½«²Ã¼ô¶à±ßÐζ¥µãÐÅÏ¢´æÈë m_verClipped¡£ ¾ßÌå´úÂëÈçÏÂ:
76
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
ÖÁ´Ë£¬ÐÂÔö¶Ô»°¿òÄÚµÄËùÓвÙ×÷Íê±Ï¡£
ËÄ¡¢½¨Á¢¶à±ßÐβüôÀà PolygonClipping
1) ÔÚÏîÄ¿Ãû³ÆÉÏÓÒ¼üÑ¡Ôñ¡°Ìí¼Ó¡±->¡°Àࡱ¡£
2) Ñ¡Ôñ C++Àà¡£
3) ÉèÖÃÀàÃû:PolygonClipping¡£
4) Ϊ PolygonClipping ÀàÌí¼Ó¶à±ßÐβüôÐèÒªµÄ³ÉÔ±ÊôÐԺͷ½·¨¡£ÈçÏÂËùʾ:
77
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
5) ÓÉѧÉú×Ô¼º°´ÕÕ¿ÎÌÃÖн²½âµÄ²½Ö裬ÔÚ PolygonClipping.cpp ÖÐÍê³É Sutherland-Hodgeman Ëã·¨¡£
78
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
Î塢ʹÓòüôËã·¨Àà PolygonClipping ºÍ¶Ô»°¿òÀà PolygonClippingDlg
1) ½¨ºÃ PolygonClipping Ààºó£¬ÔÚÇ°Ãæ²Ù×÷¹ýµÄ view ÊÓͼÀàÄÚ£¬Ìí¼Ó PolygonClipping ÀàÐ͵ijÉÔ±ÊôÐÔ£¬ÓÃÀ´´æ´¢²Ã¼ôËã·¨ÐèÒªµÄÊý¾Ý¡£ÎªÁ˶Աȣ¬½«Ç°ÃæÉÏ´Î×÷Òµ ÖеÄÖ±Ï߶βüô³ÉÔ±Ãû¸Ä³É¡°lineClip¡±¡£
2) ÔÚ view ÀàµÄ cpp ÎļþÄÚÒýÈë PolygonClippingDlg ÀàµÄÍ·Îļþ£¬Îª²úÉúÏàÓ¦µÄ¶Ô »°¿ò×ö×¼±¸¡£
3) ½øÈëÇ°Ãæ¡°¶à±ßÐβüô¡±²Ëµ¥ÏîµÄÏìÓ¦º¯Êý£¬¼´ view ÀàµÄ OnPolygonClipping º¯Êý£¬Íê³É²Ëµ¥ÏîµÄÏûÏ¢´¦Àí³ÌÐò¡£
Ê×ÏÈ£¬ÔÚº¯ÊýÄÚÉú³É¶Ô»°¿òÀà PolygonClippingDlg µÄ¾ßÌå¶ÔÏ󣬲¢ÏÔʾ¸Ã¶Ô»°¿ò¡£ µ±¶Ô»°¿òÄÚµÄÊý¾ÝÌîÈëÍê±Ïºó£¬µã»÷¡°È·¶¨¡±»ò¡°È¡Ïû¡±°´Å¥£¬¹Ø±Õ¶Ô»°¿ò£¬ »Øµ½´Ëº¯Êý¡£Í¨¹ý DoModal()º¯ÊýµÄ·µ»ØÖµ£¬¿ÉÒÔÅжÏÓû§¹Ø±Õ¶Ô»°¿òʱ£¬µ¥
79
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
»÷µÄÊÇ¡°È·¶¨¡±°´Å¥£¬»¹ÊÇ¡°È¡Ïû¡±°´Å¥¡£Èôµ¥»÷µÄÊÇ¡°È·¶¨¡±°´Å¥£¬Ôò»ñÈ¡ Óû§ÊäÈëµÄÊý¾Ý¡£
view ÀàµÄ OnPolygonClipping º¯Êý×îÖÕ´úÂëÈçÏÂ:
4) ÿ´ÎˢнçÃæºó£¬»á×Ô¶¯µ÷Óà view ÀàµÄ OnDraw º¯Êý£¬ÏÂÃæÎÒÃDZ༠OnDraw º¯Êý¡£
Ê×ÏÈ£¬½«²ÎÊý pDC µÄ×¢ÊÍ´ò¿ª¡£È»ºó£¬ÉèÖÃÐèÒªµÄ×ø±êϵ£¬×îºó£¬µ÷Óà PolygonClippingDlg Àà¶ÔÏóÍê³É¶à±ßÐβüô¡£ ÓÉÓÚ´ËʱÕû¸öÏîÄ¿Óжà¸ö²Ëµ¥Ïîʼþ´¥·¢£¬ÎªÁ˱êÃ÷µ±Ç°´¥·¢µÄÊÇÄĸöʼþ£¬ Ϊ view ÀàÔö¼ÓÒ»¸öÕûÐ͵ijÉÔ±ÊôÐÔ m_type£¬³õʼ»¯Îª 0¡£µ÷Óá°Ö±Ï߶βüô¡± ʱ£¬m_type=1£¬µ÷Óá°¶à±ßÐβüô¡±Ê±£¬m_type=2¡£È»ºóÔÚ OnDraw º¯ÊýÄÚ½ø ÐÐÅжϣ¬µ÷Óò»Í¬µÄ¹¦ÄÜ¡£
80
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
ÖÁ´Ë£¬Ö»ÐèͬѧÃÇÍê³É PolygonClipping ÀàÄÚµÄ Sutherland-Hodgeman Ëã·¨:void SutherlandHodgemanClipper(CDC *pDC);
È«²¿²Ù×÷Íê³É£¬ÏÂÃæÊÇÔËÐÐЧ¹û¡£
Áù¡¢²âÊÔ
¼ÙÉè²Ã¼ô¾ØÐδ°¿ÚµÄ×óÉϽǺÍÓÒϽÇ×ø±ê·Ö±ðΪ(70,400)ºÍ(500,60)¡£Ê¹ÓÃÀ¶É«
»æÖƲüôÇ°µÄ¶à±ßÐΣ¬Ê¹ÓúìÉ«Ìî³ä²Ã¼ôºóµÄ¶à±ßÐΣ¬Ê¹ÓÃÂÌÉ«»æÖƲüô´°¿Ú¡£ 1) Êý¾Ý:±»²Ã¼ô¶à±ßÐεĶ¥µãÐòÁÐΪ{(10, 280), (320, 450), (500, 260), (420, 10),
(280, 100), (180, 40)}¡£ ÊäÈë´°¿ÚºÍÖ±Ï߶εÄÊý¾Ý£¬ÈçÏÂËùʾ:
81
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
ÔËÐнá¹û:
82
2013/09/02~2020/5/9
ʵÑéÖ¸µ¼Êé
Æß¡¢²¹³ä˵Ã÷
ÈçºÎÅжÏÒ»¸öµãÔڲüô´°¿ÚÄÚ»òÍâ? Ìáʾ:ÓÉÓڲüô´°¿ÚµÄ¶¥µãºÍ±»²Ã¼ô¶à±ßÐεĶ¥µã¶¼ÊÇ°´Ë³Ê±Õë·½ÏòÊäÈ룬¿ÉÒÔʹÓÃÏò Á¿µÄ²æ³ËÔËËã(²»Êǵã³Ë)£¬Æä½á¹ûÊÇÒ»¸öÏòÁ¿£¬¸ù¾Ý´ËÏòÁ¿µÄ·½Ïò£¬ÅжϵãÔڲüô´° ¿ÚµÄÄÚ»òÍâ(¡°ÓÒÊÖ·¨Ôò¡±)¡£
83