ÑÇÐÇÓÎÏ·¹ÙÍø-www.yaxin868.com

ɽ¶«ÑÇÐÇÓÎÏ·¹ÙÍø»ú´²ÓÐÏÞ¹«Ë¾Ï³´²¹Ù·½ÍøÕ¾½ñÌìÊÇ£º2025-05-03Çл»³ÇÊÐ[È«¹ú]-ÍøÕ¾µØÍ¼
ÍÆ¼ö²úÆ· :
ÍÆ¼öÐÂÎÅ
¼¼ÊõÎÄÕµ±Ç°Î»ÖÃ:¼¼ÊõÎÄÕÂ>

ÖíÈâÑÕÉ«·Ö¼¶ÒǵÄÖÆ×÷·½·¨

ʱ¼ä:2025-05-03    ×÷Õß: ¹ÜÀíÔ±

רÀûÃû³Æ£ºÖíÈâÑÕÉ«·Ö¼¶ÒǵÄÖÆ×÷·½·¨
¼¼ÊõÁìÓò£º
±¾Ïî·¢Ã÷ÖíÈâÑÕÉ«·Ö¼¶ÒÇ£¬ÊôÓÚ¼ÆËã»úÊÓ¾õºÍÅ©²úÆ·ÖÊÁ¿×Ô¶¯·Ö¼¶É豸ÁìÓò¡£
±³¾°¼¼Êõ£º
ÉúÏÊÖíÈâËæÀ䲨¡¢°Ú·ÅµÄʱ¼ä²»Í¬ÆäÖÊÁ¿·¢ÉúÏÔÖøµÄ±ä»¯£¬Ò»¸ö¼òµ¥Ê¶±ðµÄ±êÖ¾ÐÔÖ¸±ê¾ÍÊÇÖíÈâµÄÑÕÉ«£¬Ïû·ÑÕß¾­³£»á¸ù¾ÝÖíÈâÑÕÉ«µÄ²îÒìÀ´Ñ¡Ôñ¹ºÂò£¬Ã»ÓÐÒ»¸ö¿ÆÑ§µÄ¡¢¿Í¹ÛµÄÑÕÉ«µÈ¼¶±ê×¼À´²ÎÕÕ£¬Í¬Ê±³¬ÊгöÊÛµÄÉúÏÊÖíÈâûÓÐÒÀ¾ÝÉúÏÊÈâµÄ°Ú·Åʱ¼ä(ÑÕÉ«²»Í¬)²ÉÓò»Í¬µÄ¼Û¸ñ£¬Ã»ÓÐÕæÕý×öµ½¡°°´ÖÊÂÛ¼Û¡±£»¹úÍâµÄÖíÈâÖÊÁ¿¶¼ÓÐÏàÓ¦µÄÑÕÉ«µÈ¼¶±ê×¼£¬ËûÃǵÄÖíÈâÑÕÉ«±ê×¼ÔÚÖíÈâµÄ¶¨¼Û¡¢¹úÄÚÁãÊÛ¡¢¹ú¼ÊóÒ×·½ÃæÆðמ޴óµÄ×÷Ó㬶øÎÒ¹úÖíÈâ²úÆ·ÖÁ½ñûÓÐ×Ô¼ºµÄÑÕÉ«µÈ¼¶±ê×¼£¬ÎÞ·¨ºÍ¹ú¼Ê½Ó¹ì£¬²ÎÓëÊÀ½çµÄÖíÈâóÒ×¾ºÕù£¬ÔÚ¹úÍ⣬ÀûÓüÆËã»úÊÓ¾õ¼¼Êõ¶ÔÖíÈâÑÕÉ«½øÐзּ¶ÒѾ­µÃµ½ÁËÉÌÆ·»¯Ó¦Ó㬵«¹úÄÚÕâ·½ÃæµÄ¼¼Êõ¼°É豸»¹Êǿհס£Òò´ËÆÈÇÐÐèÒª½¨Á¢Ò»ÏµÁмÆËã»ú·Ö¼¶ÏµÍ³£¬Í³Ò»ÖíÈâÑÕÉ«µÈ¼¶±ê×¼£¬ÒÔÊÊÓ¦ÖÊÁ¿¿ØÖƺÍÊг¡µÄÐèÒª¡£

·¢Ã÷ÄÚÈÝ
¼¼ÊõÎÊÌâ ±¾·¢Ã÷Õë¶ÔĿǰÎÒ¹úȱ·¦ÖíÈâÑÕÉ«¼ÆËã»ú·Ö¼¶ÏµÍ³£¬½¨Á¢ÁËÒ»Ì×ÖíÈâÑÕÉ«·Ö¼¶ÒÇ£¬ÒÔ¿Ë·þ´«Í³µÄÖíÈâÑÕÉ«·Ö¼¶Ö÷ÒªÒÀ¿¿È˵ÄÊÓ¾õÆ÷¹Ù½øÐУ¬ÈÝÒ×Êܵ½È˵ÄÖ÷¹ÛÒâÖ¾Ó°Ï죬·Ö¼¶µÄ½á¹ûȱ·¦¿Í¹ÛÐÔµÄȱÏÝ¡£
¼¼Êõ·½°¸ Ò»ÖÖÖíÈâÑÕÉ«·Ö¼¶ÒÇÆ÷£¬°üÀ¨Í¼Ïñ²É¼¯É豸ºÍÖíÈâÑÕÉ«·Ö¼¶Èí¼þ£¬ÆäÌØÕ÷ÔÚÓÚ (1)ͼÏñ»ñÈ¡É豸°üÀ¨Í¼Ïñ²É¼¯ÊÒ4¡¢ÊýÂëÏà»ú5 ͼÏñ²É¼¯ÊÒ4Ϊֱ¾¶Îª600mmµÄ°ëÇòÐÎÄ͸ßβÄÁÏÖÆ³É£¬ÄÚ±ÚÍ¿³É°×É«£¬4¸ö50WÂ±ËØµÆ1µÈ¼ä¾à°²×°ÓÚͼÏñ²É¼¯ÊÒ4µÄµ×²¿£¬Í¼Ïñ²É¼¯ÊÒ4ÄÚµÄÔØÑų̀2ÃæÎªÓÃϸɰ²¼´òÄ¥¹ýµÄºÚÉ«Ï𽺰壬ÑùÆ·3ÖÃÓÚÏ𽺰åÉÏ£¬Í¼Ïñ²É¼¯ÊÒ4¶¥¶Ë¿ªÒ»Ö±¾¶Îª45mmÔ²¿×£»Ñ¡ÓÃCANON-PowerShotA70ÊýÂëÏà»ú5£¬¾µÍ·´©¹ýÓÚͼÏñ²É¼¯ÊÒ4¶¥Ô²¿×£» (2)ÖíÈâÑÕÉ«·Ö¼¶Èí¼þ ÖíÈâÑÕÉ«¼ÆËã»ú·Ö¼¶Èí¼þÓÉͼÏñÊäÈë¿ØÖÆÄ£¿é¡¢Í¼Ïñ·Ö¸îÓëʶ±ðÄ£¿é¡¢Í¼ÏñÑÕÉ«ÌØÕ÷²ÎÊýÌáȡģ¿é¡¢ÖíÈâÑÕÉ«µÈ¼¶Êä³öÄ£¿é×é³É a¡¢Í¼ÏñÊäÈë¿ØÖÆÄ£¿é¿ÉÒÔ×Ô¶¯´ò¿ªÊýÂëÏà»ú5¾µÍ·¡¢×Ô¶¯ÅÄÉãÑùÆ·3µÄ²ÊɫͼÏñ£» b¡¢Í¼Ïñ·Ö¸îÓëʶ±ðÄ£¿éÓÃÓÚ¶ÔÊäÈëµÄ²ÊɫͼÏñ½øÐÐÈ¥Ô롢ȥ±³¾°¡¢±ßÔµÌáÈ¡£¬×îÖÕ»ñÈ¡ÖíÈâͼÏñµÄÓÐÐ§ÌØÕ÷ÑÕÉ«ÌáÈ¡ÇøÓò£» c¡¢Í¼ÏñÑÕÉ«ÌØÕ÷²ÎÊýÌáȡģ¿éÓÃÓÚ¶ÔͼÏñ·Ö¸îÓëʶ±ðÄ£¿é»ñÈ¡µÄÓÐЧÑÕÉ«ÌáÈ¡ÇøÓòÌáȡͼÏñµÄÑÕÉ«ÌØÕ÷²ÎÊý£¬°üÀ¨ºìÉ«R¡¢ÂÌÉ«G¡¢À¶É«B¡¢É«²ÊH¡¢±¥ºÍ¶ÈS¡¢ÁÁ¶ÈV£» d¡¢ÖíÈâÑÕÉ«µÈ¼¶Êä³öÄ£¿éÓÃÓÚµ÷ÓÃÖíÈâÑÕÉ«µÈ¼¶Ä£ÐÍÖíÈâÑÕÉ«µÈ¼¶G£½4.62+6.63*S-10.20*V£¬Êä³öÖíÈâÑÕÉ«¼¶±ð¡£
ÓÐÒæÐ§¹û ±¾·¢Ã÷ÖíÈâÑÕÉ«·Ö¼¶ÒÇÒÑÔÚÄϾ©ËÕ¹ûµÈ³¬ÊнøÐÐС¹æÄ£ÊÔÓã¬ÊÔÓú󣬹˿ͶԸÃϵͳ·´Ó¦Á¼ºÃ£¬ÓÐÁËÕâÌ×ϵͳ£¬ËûÃÇÕæÇеĸÐÊܵ½¡°°´ÖÊÂÛ¼¶¡¢°´¼¶ÂÛ¼Û¡±´øÀ´µÄʵ»Ý£¬Í¬Ê±¸ÃϵͳÐÔÄÜÎȶ¨¡¢¹¦ÄÜÆëÈ«¡¢Ê¹Ó÷½±ã¡¢²Ù×÷¼òµ¥£¬Êܵ½³¬ÊйÜÀíÈËÔ±ºÍÉ豸²Ù×÷ÈËÔ±µÄºÃÆÀ¡£
ËÄ

ͼ1ÖíÈâÑÕÉ«¼ÆËã»ú·Ö¼¶É豸ͼÏñÊäÈëϵͳ ¢ÙµÆÅÝ¢ÚÔØÑų̀¢ÛÑùÆ·¢ÜͼÏñ²É¼¯ÊÒ¢ÝÊýÂëÏà»ú¢ÞÊý¾ÝÏߢ߼ÆËã»ú ͼ2ÖíÈâÑÕÉ«¼ÆËã»ú·Ö¼¶ÒÇ×ÜÌå¿ò¼Üͼ Îå¾ßÌåʵʩÀý·½Ê½ ±¾·¢Ã÷ΪһÌ×ÖíÈâÑÕÉ«·Ö¼¶ÒÇ£¬ÓÉͼÏñ»ñÈ¡É豸ÓëÖíÈâÑÕÉ«¼ÆËã»ú·Ö¼¶Èí¼þ×é³É¡£
(1)ͼÏñ»ñÈ¡É豸 a¡¢Í¼Ïñ²É¼¯ÊÒ¢ÜÓÉÖ±¾¶Îª600mmµÄ°ëÇòÐΣ¬ÄÚ±ÚÍ¿³É°×É«£¬4¸ö50WÂ±ËØµÆµÈ¼ä¾à°²×°ÓÚͼÏñ²É¼¯ÊҢܵĵײ¿£¬Í¼Ïñ²É¼¯ÊÒ¢ÜÄÚµÄÔØÑų̀¢ÚÃæÎªÓÃϸɰ²¼´òÄ¥¹ýµÄºÚÉ«Ï𽺰壬ÑùÆ·¢ÛÖÃÓÚÏ𽺰åÉÏ£¬Í¼Ïñ²É¼¯ÊҢܶ¥¶Ë¿ªÒ»Ö±¾¶Îª45mmÔ²¿×¡£
b¡¢Ñ¡ÓÃCANNON-PowerShotA70ÊýÂëÏà»ú¢Ý£¬¾µÍ·´©¹ýÓÚͼÏñ²É¼¯ÊҢܶ¥Ô²¿×¡£
c¡¢ÊýÂëÏà»ú¢ÝÓë¼ÆËã»ú¢ßÖ®¼ä²ÉÓÃËæÊýÂëÏà»ú¢Ý¸½´øµÄUSB2.0Êý¾ÝÏߢÞÁ¬½Ó¡£
(2)ÖíÈâÑÕÉ«¼ÆËã»ú·Ö¼¶Èí¼þ ÖíÈâÑÕÉ«¼ÆËã»ú·Ö¼¶Èí¼þÓÉͼÏñÊäÈë¿ØÖÆÄ£¿é¡¢Í¼Ïñ·Ö¸îÓëʶ±ðÄ£¿é¡¢Í¼ÏñÑÕÉ«ÌØÕ÷²ÎÊýÌáȡģ¿é¡¢ÖíÈâÑÕÉ«µÈ¼¶Êä³öÄ£¿é×é³É£¬¸ÃÈí¼þ¿ª·¢ÓïÑÔΪVisual C++6.0¡£
a¡¢Í¼ÏñÊäÈë¿ØÖÆÄ£¿é½áºÏCanon Digital Camera SDK6.0.1(Canon DC-SDK6.0.1)¿ª·¢Íê³É£¬¸ÃÄ£¿é¿ÉÒÔ×Ô¶¯´ò¿ªÊýÂëÏà»ú¢Ý¾µÍ·¡¢×Ô¶¯ÅÄÉãÑùÆ·¢ÛµÄ²ÊɫͼÏñ¡£
b¡¢Í¼Ïñ·Ö¸îÓëʶ±ðÄ£¿éÓÃÓÚ¶ÔÊäÈëµÄ²ÊɫͼÏñ½øÐÐÈ¥Ô롢ȥ±³¾°¡¢±ßÔµÌáÈ¡£¬×îÖÕ»ñÈ¡ÖíÈâͼÏñµÄÓÐÐ§ÌØÕ÷ÑÕÉ«ÌáÈ¡ÇøÓò¡£
c¡¢Í¼ÏñÑÕÉ«ÌØÕ÷²ÎÊýÌáȡģ¿éÓÃÓÚ¶ÔͼÏñ·Ö¸îÓëʶ±ðÄ£¿é»ñÈ¡µÄÓÐЧÑÕÉ«ÌáÈ¡ÇøÓòÌáȡͼÏñµÄÑÕÉ«ÌØÕ÷²ÎÊý£¬°üÀ¨ºìÉ«R¡¢ÂÌÉ«G¡¢À¶É«B¡¢É«²ÊH¡¢±¥ºÍ¶ÈS¡¢ÁÁ¶ÈV¡£
d¡¢ÖíÈâÑÕÉ«µÈ¼¶Êä³öÄ£¿éÓÃÓÚµ÷ÓÃÖíÈâÑÕÉ«µÈ¼¶Ä£ÐÍ(ÖíÈâÑÕÉ«µÈ¼¶G£½4.62+6.63*S-10.20*V)£¬Êä³öÖíÈâÑÕÉ«¼¶±ð£¬ÊµÏÖÁËÖíÈâÑÕÉ«µÄ·Ö¼¶¡£
ϵͳÈí¼þµÄ°²×°¶ÔϵͳÈíÓ²¼þµÄÒªÇóÊÇ ¡ñCPUÔÚ±¼ÌÚIIÒÔÉÏÄÚ´æ128MBÒÔÉÏ Ó²ÅÌ20GÒÔÉÏ ¡ñWindows98»òÒÔÉÏwindows²Ù×÷ϵͳ ͨ¹ýÒÔÉÏÓ²¼þÉ豸ºÍÈí¼þ×÷ΪºËÐÄÖ§³Ö£¬×îÖÕʵÏÖÁËÖíÈâÑÕÉ«¼ÆËã»úÖÇÄÜ·Ö¼¶¡£¸½³ÌÐòÔ­´úÂë Ò»¡¢Í¼ÏñÊäÈë¿ØÖÆÄ£¿é(¿ØÖÆÊýÂëÏà»ú) LRESULT CRelCtrlDlg¡ËWindowProc(UINT message£¬WPARAM wParam£¬LPARAM 1Param)¡¡¡¡{¡¡¡¡¡ÎTODOAdd your specialized code here and/or call the base class<!-- SIPO <DP n="2"> --><dp n="d2"/>¡¡¡¡ cdError err£»¡¡¡¡ BOOL fRes£»¡¡¡¡ CProgress CProg£»¡¡¡¡ char szSavePath[MAX_PATH]£»¡¡¡¡ cdUInt32 NumData£»¡¡¡¡ if(message£½£½g_ReleaseOnMessage)¡¡¡¡ {¡¡¡¡ /*UI is locked so that information may not be changed.*/¡¡¡¡ err£½CDLockUI(m_hSource)£»¡¡¡¡ if(GETERRORID(err)£¡£½cdOK)¡¡¡¡ {¡¡¡¡ goto camerr£»¡¡¡¡ }¡¡¡¡ /*It sets up so that a complete message may be disregarded.*/¡¡¡¡ m_fProgramRelease£½TRUE£»¡¡¡¡ /*A special camera ends a view finder.*/¡¡¡¡ if(m_RelControlCap&amp;cdRELEASE_CONTROL_CAP_ABORT_VIEWFINDER)¡¡¡¡ {¡¡¡¡ if(m_fVFEnd)¡¡¡¡ {¡¡¡¡ /*A view finder is ended.*/¡¡¡¡ err£½CDTermViewfinder(m_hSource)£»¡¡¡¡ if(GETERRORID(err)£¡£½cdOK)¡¡¡¡ {¡¡¡¡ goto camerr£»¡¡¡¡ }¡¡¡¡ /*A thread is ended.*/¡¡¡¡ m_fVFEnd£½FALSE£»¡¡¡¡ g_CpVFThread-£¾ResumeThread()£»¡¡¡¡ WaitForSingleObject(g_CpVFThread-£¾m_hThread£¬INFINITE)£»¡¡¡¡ Invalidate()£»¡¡¡¡ UpdateWindow()£»¡¡¡¡ }¡¡¡¡ }¡¡¡¡ /*A photograph is taken.*/¡¡¡¡ NumData£½0£»¡¡¡¡ err£½CDRelease(m_hSource£¬FALSE£¬NULL£¬NULL£¬cdPROG_NO_REPORT£¬&amp;NumData)£»¡¡¡¡ if(GETERRORID(err)£¡£½cdOK)¡¡¡¡ {¡¡¡¡ goto camerr£»¡¡¡¡ }¡¡¡¡ /*The directory to save is acquired.*/<!-- SIPO <DP n="3"> --><dp n="d3"/>¡¡¡¡GetSavePath(szSavePath£¬MAX_PATH)£»¡¡¡¡/*The photoed picture is saved.*/¡¡¡¡fRes£½CProg.GetReleaseData(m_hSource£¬NumData£¬szSavePath£¬m_fileName)£»¡¡¡¡if(£¡fRes)¡¡¡¡{¡¡¡¡goto apierr£»¡¡¡¡}¡¡¡¡else if(GETERRORID(CProg.m_LastErr)£½£½cdOPERATION_CANCELLED)¡¡¡¡{¡¡¡¡m_fProgramRelease£½FALSE£»¡¡¡¡CDUnlockUI(m_hSource)£»¡¡¡¡returnTRUE£»¡¡¡¡}¡¡¡¡else if(GETERRORID(CProg.m_LastErr)£¡£½cdOK)¡¡¡¡{¡¡¡¡err£½CProg.m LastErr£»¡¡¡¡goto camerr£»¡¡¡¡}¡¡¡¡/*The lock of UI is canceled.*/¡¡¡¡err£½CDUnlockUI(m_hSource)£»¡¡¡¡if(GETERRORID(err)£¡£½cdOK)¡¡¡¡{¡¡¡¡goto camerr£»¡¡¡¡}¡¡¡¡/*It sets up so that a complete message may be received.*/¡¡¡¡m_fProgramRelease£½FALSE£»¡¡¡¡returnTRUE£»}else if(message£½£½g_ReleaseCompleteMessage){¡¡¡¡if(m_fProgramRelease£½£½FALSE)¡¡¡¡{¡¡¡¡/*UI is locked so that information may not be changed.*/¡¡¡¡err£½CDLockUI(m_hSource)£»¡¡¡¡if(GETERRORID(err)£¡£½cdOK)¡¡¡¡{¡¡¡¡goto camerr£»¡¡¡¡}¡¡¡¡/*The directory to save is acquired.*/¡¡¡¡GetSavePath(szSavePath£¬MAX_PATH)£»¡¡¡¡NumData£½(cdUInt32)wParam£»¡¡¡¡/*The photoed picture is saved.*/¡¡¡¡fRes£½CProg.GetReleaseData(m_hSource£¬NumData£¬szSavePath£¬m_fileName)£»¡¡¡¡if(£¡fRes)<!-- SIPO <DP n="4"> --><dp n="d4"/>¡¡¡¡{¡¡¡¡goto apierr£»¡¡¡¡}¡¡¡¡else if(GETERRORID(CProg.m_LastErr)£½£½cdOPERATION_CANCELLED)¡¡¡¡{¡¡¡¡m_fProgramRelease£½FALSE£»¡¡¡¡CDUnlockUI(m_hSource)£»¡¡¡¡returnTRUE£»¡¡¡¡}¡¡¡¡else if(GETERRORID(CProg.m_LastErr)£¡£½cdOK)¡¡¡¡{¡¡¡¡err£½CProg.m_LastErr£»¡¡¡¡goto camerr£»¡¡¡¡}¡¡¡¡/*The lock of UI is canceled.*/¡¡¡¡err£½CDUnlockUI(m_hSource)£»¡¡¡¡if(GETERRORID(err)£¡£½cdOK)¡¡¡¡{¡¡¡¡goto camerr£»¡¡¡¡}¡¡¡¡returnTRUE£»¡¡¡¡}}else if(message£½£½g_AbortPCEVF){¡¡¡¡if(m_fVFEnd)¡¡¡¡{¡¡¡¡/*A view finder is ended.*/¡¡¡¡err£½CDTermViewfinder(m_hSource)£»¡¡¡¡if(GETERRORID(err)£¡£½cdOK)¡¡¡¡{¡¡¡¡goto camerr£»¡¡¡¡}¡¡¡¡/*A thread is ended.*/¡¡¡¡m_fVFEnd£½FALSE£»¡¡¡¡g_CpVFThread-£¾ResumeThread()£»¡¡¡¡WaitForSingleObject(g_CpVFThread-£¾m_hThread£¬INFINITE)£»¡¡¡¡Invalidate()£»¡¡¡¡UpdateWindow()£»¡¡¡¡}¡¡¡¡return TRUE£»}<!-- SIPO <DP n="5"> --><dp n="d5"/>return CDialog¡ËWindowProc(message£¬wParam£¬1Param)£»¡¡¡¡camerr¡¡¡¡char szErrStr[256]£»¡¡¡¡wsprintf(szErrStr£¬¡åErrorCode£½0x£¥08X¡å£¬err)£»¡¡¡¡MessageBox(szErrStr)£»¡¡¡¡CDUnlockUI(m_hSource)£»¡¡¡¡m_fProgramRelease£½FALSE£»¡¡¡¡returnFALSE£»apierr¡¡¡¡MessageBox(¡åAPI Error¡å)£»¡¡¡¡CDUnlockUI(m_hSource)£»¡¡¡¡m_fProgramRelease£½FALSE£»¡¡¡¡returnFALSE£»}void CRelCtrlDlg¡ËOnDestroy(){¡¡¡¡CDialog¡ËOnDestroy()£»¡¡¡¡¡ÎTODOAdd your specialized code here and/or call the base class¡¡¡¡cdError err£»¡¡¡¡char szErrStr[256]£»¡¡¡¡/*End processing of CDSDK is performed.*/¡¡¡¡err£½CDFinishSDK()£»¡¡¡¡if(GETERRORID(err)£¡£½cdOK)¡¡¡¡{¡¡¡¡wsprintf(szErrStr£¬¡åErrorCode£½0x£¥08X¡å£¬err)£»¡¡¡¡MessageBox(szErrStr)£»¡¡¡¡}}void CRelCtrlDlg¡ËSetPicQuery(){¡¡¡¡UpdateData()£»¡¡¡¡cdError err1£¬err2£»¡¡¡¡CString CAddStr£»¡¡¡¡m_CInfoString£½¡å¡å£»¡¡¡¡/*Quality of image£¬image size£¬and the average size of a picture file are acquired.*/¡¡¡¡cdCompQuality Quality£»¡¡¡¡cdImageSize Size£»¡¡¡¡¡Î ()¡¡¡¡switch(m_Camsize){¡¡¡¡case 0¡¡¡¡ Size£½cdIMAGE_SIZE_SMALL£»<!-- SIPO <DP n="6"> --><dp n="d6"/>¡¡¡¡ break£»case 1¡¡¡¡ Size£½cdIMAGE_SIZE_MEDIUM1£»¡¡¡¡ break£»case 2¡¡¡¡ Size£½cdIMAGE_SIZE_MEDIUM2£»¡¡¡¡ break£»case 3¡¡¡¡ Size£½cdIMAGE_SIZE_LARGE£»¡¡¡¡ break£»}switch(m_CamQuery){case 0¡¡¡¡ Quality£½cdCOMP_QUALITY_NORMAL£»¡¡¡¡ break£»case 1¡¡¡¡ Quality£½cdCOMP_QUALITY_FINE£»¡¡¡¡ break£»case 2¡¡¡¡ Quality£½cdCOMP_QUALITY_SUPERFINE£»¡¡¡¡ break£»}err1£½CDSetImageFormatAttribute(m_hSource£¬Quality£¬Size)£»m_CamMode£½17£»cdShootingModeShootingMode£»switch(m_CamMode){case 0¡¡¡¡ ShootingMode£½cdSHOOTING_MODE_AUTO£»¡¡¡¡ break£»case 1¡¡¡¡ ShootingMode£½cdSHOOTING_MODE_PROGRAM£»¡¡¡¡ break£»case 2¡¡¡¡ ShootingMode£½cdSHOOTING_MODE_TV£»¡¡¡¡ break£»case 3¡¡¡¡ ShootingMode£½cdSHOOTING_MODE_AV£»¡¡¡¡ break£»case 4¡¡¡¡ ShootingMode£½cdSHOOTING_MODE_MANUAL£»¡¡¡¡ break£»case 5<!-- SIPO <DP n="7"> --><dp n="d7"/>¡¡¡¡ ShootingMode£½cdSHOOTING_MODE_A_DEP£»¡¡¡¡ break£»case 6¡¡¡¡ ShootingMode£½cdSHOOTING_MODE_M_DEP£»¡¡¡¡ break£»case 7¡¡¡¡ ShootingMode£½cdSHOOTING_MODE_BULB£»¡¡¡¡ break£»case 8¡¡¡¡ ShootingMode£½cdSHOOTING_MODE_MANUAL_2£»¡¡¡¡ break£»case 9¡¡¡¡ ShootingMode£½cdSHOOTING_MODE_FAR_SCENE£»¡¡¡¡ break£»case 10¡¡¡¡ ShootingMode£½cdSHOOTING_MODE_FAST_SHUTTER£»¡¡¡¡ break£»case 11¡¡¡¡ ShootingMode£½cdSHOOTING_MODE_SLOW_SHUTTER£»¡¡¡¡ break£»case 12¡¡¡¡ ShootingMode£½cdSHOOTING_MODE_NIGHT_SCENE£»¡¡¡¡ break£»case 13¡¡¡¡ ShootingMode£½cdSHOOTING_MODE_GRAY_SCALE£»¡¡¡¡ break£»case 14¡¡¡¡ ShootingMode£½cdSHOOTING_MODE_SEPIA£»¡¡¡¡ break£»case 15¡¡¡¡ ShootingMode£½cdSHOOTING_MODE_PORTRAIT£»¡¡¡¡ break£»case 16¡¡¡¡ ShootingMode£½cdSHOOTING_MODE_SPOT£»¡¡¡¡ break£»case 17¡¡¡¡ ShootingMode£½cdSHOOTING_MODE_MACRO£»¡¡¡¡ break£»case 18¡¡¡¡ ShootingMode£½cdSHOOTING_MODE_BW£»¡¡¡¡ break£»case 19¡¡¡¡ ShootingMode£½cdSHOOTING_MODE_PANFOCUS£»¡¡¡¡ break£»<!-- SIPO <DP n="8"> --><dp n="d8"/>¡¡¡¡case 20¡¡¡¡ ShootingMode£½cdSHOOTING_MODE_VIVID£»¡¡¡¡ break£»¡¡¡¡case 21¡¡¡¡ ShootingMode£½cdSHOOTING_MODE_NEUTRAL£»¡¡¡¡ break£»¡¡¡¡case 22¡¡¡¡ ShootingMode£½cdSHOOTING_MODE_INVALID£»¡¡¡¡ break£»¡¡¡¡}¡¡¡¡err2£½CDSetShootingMode(m_hSource£¬ShootingMode)£»¡¡¡¡if(GETERRORID(err1)£½£½cdOK/*&amp;&amp; GETERRORID(err2)£½£½cdOK*/)¡¡¡¡GetCameraInformation()£»¡¡¡¡else¡¡¡¡MessageBox(¡åSet Error¡å)£»}void CRelCtrlDlg¡ËSetCamMode(){¡¡¡¡cdError err£»¡¡¡¡err£½CDLockUI(m_hSource)£»¡¡¡¡if(GETERRORID(err)£¡£½cdOK)¡¡¡¡{¡¡¡¡goto camerr£»¡¡¡¡}¡¡¡¡err£½SetReleaseState()£»¡¡¡¡if(GETERRORID(err)£¡£½cdOK)¡¡¡¡{¡¡¡¡goto camerr£»¡¡¡¡}¡¡¡¡/*The lock of UI is canceled.*/¡¡¡¡err£½CDUnlockUI(m_hSource)£»¡¡¡¡if(GETERRORID(err)£¡£½cdOK)¡¡¡¡{¡¡¡¡goto camerr£»¡¡¡¡}¡¡¡¡return£»<!-- SIPO <DP n="9"> --><dp n="d9"/>camerr.¡¡¡¡char szErrStr[256]£»¡¡¡¡wsprintf(szErrStr£¬¡åErrorCode£½0x£¥08X¡å£¬err)£»¡¡¡¡MessageBox(szErrStr)£»¡¡¡¡CDUnlockUI(m_hSource)£»} ¶þ¡¢Í¼Ïñ·Ö¸îÓëʶ±ðÄ£¿é(-½«ÄÚ´æÖÐͼÏñת»¯Îª»Ò¶Èģʽ)¡£
BOOL CJiSuan¡ËChangtoGrid(){¡¡¡¡int w£½m_dib.GetDIBWidth()£»¡¡¡¡int h£½m_dib.GetDIBHeight()£»¡¡¡¡for(int i£½0£»i£¼w£»i++)¡¡¡¡ for(int j£½O£»j£¼h£»j++)¡¡¡¡ {¡¡¡¡ m_dib.SetPixel(i£¬j£¬RGB(255£¬255£¬255))£»¡¡¡¡ if(i£½£½10)¡¡¡¡i£½w-10£»¡¡¡¡ if(j£½£½10)¡¡¡¡j£½h-10£»¡¡¡¡ }¡¡¡¡for(i£½0£»i£¼w£»i++)¡¡¡¡ for(int j£½0£»j£¼h£»j++)¡¡¡¡ {¡¡¡¡ DWORD rgb£½GetPixel(i£¬j)£»¡¡¡¡ int Y£½m_dib.FindR(rgb)-m_dib.FindB(rgb)£»¡¡¡¡ int y£½m_dib.FindR(rgb)-m_dib.FindG(rgb)£»¡¡¡¡ if(Y£¾255)Y£½255£»¡¡¡¡ if(Y£¼0)Y£½0£»¡¡¡¡ if(y£¾255)y£½255£»¡¡¡¡ if(y£¼0)y£½0£»¡¡¡¡ Y£½Y£¼y£¿Yy£»¡¡¡¡ SetPixel(i£¬j£¬RGB(Y£¬Y£¬Y))£»¡¡¡¡ }¡¡¡¡int yuZhi£½FindAllYu()£»¡¡¡¡for(i£½0£»i£¼w£»i++)¡¡¡¡ for(int j£½0£»j£¼h£»j++)¡¡¡¡ {<!-- SIPO <DP n="10"> --><dp n="d10"/>¡¡¡¡ if(m_dib.FindR(GetPixel(i£¬j))£¼£½yuZhi)¡¡¡¡ {¡¡¡¡ ¡Î ±³¾°É«¡¡¡¡ SetPixel(i£¬j£¬RGB(255£¬255£¬255))£»¡¡¡¡ }¡¡¡¡ }¡¡¡¡ for(i£½0£»i£¼w£»i++)¡¡¡¡ for(int j£½0£»j£¼h£»j++)¡¡¡¡ {¡¡¡¡ if(GetPixel(i£¬j)£½£½RGB(255£¬255£¬255))¡¡¡¡ m_dib.SetPixel(i£¬j£¬RGB(255£¬255£¬255))£»¡¡¡¡ }¡¡¡¡if(m_pDIBData£¡£½NULL)¡¡¡¡ delete m_pDIBData£»¡¡¡¡m_pDIBData£½(BYTE*)new char[m_dib.GetSize()]£»¡¡¡¡memcpy(m_pDIBData£¬m_dib.m_pDIBData£¬m_dib.GetSize())£»¡¡¡¡for(i£½0£»i£¼w£»i++)¡¡¡¡ for(int j£½0£»j£¼h£»j++)¡¡¡¡ {¡¡¡¡ DWORD rgb£½GetPixel(i£¬j)£»¡¡¡¡ int Y£½int(-1.368612+0.441683*m_dib.FindR(rgb)+0.390386*m_dib.FindG(rgb)¡¡¡¡ +0.211932*m_dib.FindB(rgb))£»¡¡¡¡ if(Y£¾255)Y£½255£»¡¡¡¡ if(Y£¼0)Y£½0£»¡¡¡¡ SetPixel(i£¬j£¬RGB(Y£¬Y£¬Y))£»¡¡¡¡ }¡¡¡¡return true£»} Èý¡¢Í¼ÏñÑÕÉ«ÌØÕ÷²ÎÊýÌáȡģ¿é(ÏÂÃæÊÇ´¦ÀíãÐÖµ¼ÆËãµÄ) #ifndef_CThreshold_H_#define_CThreshold_H_¡Î¼ÆËã×î¼ÑãÐÖµclass CThreshold{<!-- SIPO <DP n="11"> --><dp n="d11"/>¡¡¡¡enum{N£½256}£»public¡¡¡¡CThreshold(){}¡¡¡¡¡«CThreshold(){}¡¡¡¡void set(int g[]£¬int a[]£¬int total£½N)£»¡¡¡¡double GetThreshold()£»protected¡¡¡¡double GetOneThreshold(intt)£»¡Î¼ÆËãÒ»¸öãÐÖµ¡¡¡¡voidGetUT()£» ¡Î¼ÆËãͼÏó»Ò¶Èƽ¾ùÖµprivate¡¡¡¡int gray[N]£¬n[N]£¬m_total£¬m_ntotal£»¡¡¡¡double m_ut£¬m_threshold£»¡ÎͼÏó»Ò¶Èƽ¾ùÖµ}£»#endif¡Î_CThreshold_H_#include¡åstdafx.h¡å#include¡åThreshold.h¡å#define SQR(x)(x)*(x)void CThreshold¡Ëset(int g[]£¬iht a[]£¬int total){¡¡¡¡m_total£½total£»¡¡¡¡for(int i£½0£»i£¼m_total£»i++){¡¡¡¡n[i]£½a[i]£»¡¡¡¡gray[i]£½g[i]£»¡¡¡¡}¡¡¡¡GetUT()£»}void CThreshold¡ËGetUT(){¡¡¡¡int nTotal£½0£»¡¡¡¡m_ut£½0.0£»m_ntotal£½0£»¡¡¡¡for(int i£½0£»i£¼m_total£»i++)¡¡¡¡ nTotal+£½n[i]£»¡¡¡¡for(i£½0£»i£¼m_total£»i++){¡¡¡¡ m_ut+£½1.0*gray[i]*n[i]/nTotal£»¡¡¡¡ m_ntotal+£½n[i]£»¡¡¡¡}}double CThreshold¡ËGetOneThreshold(int t)<!-- SIPO <DP n="12"> --><dp n="d12"/>{¡¡¡¡¡Î¼ÆËãÀàC1µÄÏñËØ»Ò¶Èƽ¾ùÖµºÍ·½²î£¬·¢Éú¸ÅÂÊ¡¡¡¡double u1£½0.0£¬s1£½0.0£¬w1£½0.0£»¡¡¡¡int total£½0£»¡¡¡¡for(int i£½0£»i£¼t£»i++)total+£½n[i]£»¡¡¡¡for(i£½0£»i£¼t£»i++){¡¡¡¡ u1+£½1.0*gray[i]*n[i]/total£»¡¡¡¡ w1+£½1.0*n[i]/m_ntotal£»¡¡¡¡}¡¡¡¡for(i£½0£»i£¼t£»i++)s1+£½1.0*SQR(gray[i]-u1)*n[i]/total£»¡¡¡¡¡Î¼ÆËãÀàC2µÄÏñËØ»Ò¶Èƽ¾ùÖµºÍ·½²î¡¡¡¡double u2£½0.0£¬s2£½0.0£¬w2£½0.0£»¡¡¡¡total£½0£»¡¡¡¡for(i£½t£»i£¼m_total£»i++)total+£½n[i]£»¡¡¡¡for(i£½t£»i£¼m_total£»i++){¡¡¡¡ u2+£½1.0*gray[i]*n[i]/total£»¡¡¡¡ w2+£½1.0*n[i]/m_ntotal£»¡¡¡¡}¡¡¡¡for(i£½t£»i£¼m_total£»i++)s2+£½1.0*SQR(gray[i]-u2)*n[i]/total£»¡¡¡¡double sw2£½w1*s1+w2*s2£»¡¡¡¡double sb2£½w1*SQR(u1-m_ut)+w2*SQR(u2-m_ut)£»¡¡¡¡return sb2/sw2£»}double CThreshold¡ËGetThreshold(){¡¡¡¡m_threshold£½0£»¡¡¡¡double nSepMax£½0.0£»¡ÎÇó·ÖÀë¶È×î´óµÄÖµ¡¡¡¡for(int t£½0£»t£¼m_total£»t++){¡¡¡¡ double temp£½GetOneThreshold(gray[t])£»¡¡¡¡ if(temp£¾nSepMax){¡¡¡¡ nSepMax£½temp£»¡¡¡¡ m_threshold£½gray[t]£»¡¡¡¡ }¡¡¡¡}¡¡¡¡return m_threshold£»}Óõݹ鷽·¨È¥³ýÑÕɫֵvoid CJiSuan¡ËFillGreenColor(int x£¬int y){<!-- SIPO <DP n="13"> --><dp n="d13"/>¡¡¡¡if(x£¼0¡¬x£¾m_dib.GetDIBWidth()¡¬y£¼0¡¬y£¾m_dib.GetDIBHeight())¡¡¡¡ return£»¡¡¡¡if(GetPixel(x£¬y)£½£½RGB(255£¬0£¬255))¡¡¡¡ SetPixel(x£¬y£¬RGB(255£¬255£¬255))£»¡¡¡¡else¡¡¡¡ return£»¡¡¡¡FillGreenColor(x+1£¬y)£»¡¡¡¡FillGreenColor(x-1£¬y)£»¡¡¡¡FillGreenColor(x£¬y-1)£»¡¡¡¡FillGreenColor(x£¬y+1)£»}ͼÏñλͼÏñËØ²Ù×÷Àà¡ÎDIB.cppimplementation file¡Î#include¡åstdafx.h¡å#include¡åDIB.h¡å#ifdef_DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[]£½_FILE_£»#endif///////////////////////////////////////////////////////////////////////////////////¡ÎCDIBCDIB¡ËCDIB(){¡¡¡¡m_pBMI£½NULL£»¡¡¡¡m_pDIBData£½NULL£»¡¡¡¡m_pDIBData2£½NULL£»}CDIB¡Ë¡«CDIB(){¡¡¡¡if(m_pBMI£¡£½NULL)¡¡¡¡ delete m_pBMI£»¡¡¡¡if(m_pDIBData£¡£½NULL)¡¡¡¡ delete m_pDIBData£»¡¡¡¡if(m_pDIBData2£¡£½NULL)¡¡¡¡ delete m_pDIBData2£»}<!-- SIPO <DP n="14"> --><dp n="d14"/>BOOL CDIB¡ËLoadFromFile(LPCTSTR lpszFileName){¡¡¡¡CFile file£»¡¡¡¡BITMAPINFO*pBMI£½NULL£»¡¡¡¡BYTE*pDIBData£½NULL£»¡¡¡¡if(£¡file.Open(lpszFileName£¬CFile¡ËmodeRead|CFile¡ËtypeBinary))¡¡¡¡{¡¡¡¡AfxMessageBox(¡å´ò²»¿ªÎļþ¡å)£»¡¡¡¡return false£»¡¡¡¡}¡¡¡¡BITMAPFILEHEADER bfh£»¡¡¡¡if(file.Read(&amp;bfh£¬sizeof(bfh))£¡£½sizeof(bfh))¡¡¡¡{¡¡¡¡AfxMessageBox(¡å¶ÁÎļþ³ö´í¡å)£»¡¡¡¡return false£»¡¡¡¡}¡¡¡¡if(bfh.bfType£¡£½0x4d42)¡¡¡¡{¡¡¡¡AfxMessageBox(¡å²»ÊÇbmpÎļþ¡å)£»¡¡¡¡return false£»¡¡¡¡}¡¡¡¡BITMAPINFOHEADER bih£»¡¡¡¡if(file.Read(&amp;bih£¬sizeof(bih))£¡£½sizeof(bih))¡¡¡¡{¡¡¡¡AfxMessageBox(¡å¶ÁÎļþ³ö´í¡å)£»¡¡¡¡return false£»¡¡¡¡}¡¡¡¡if(bih.biBitCount£¡£½24)¡¡¡¡{¡¡¡¡AfxMessageBox(¡å²»ÊÇ24λͼƬ¡å)£»¡¡¡¡return false£»¡¡¡¡}¡¡¡¡pBMI£½(BITMAPINFO*)new char[sizeof(BITMAPINFOHEADER)]£»¡¡¡¡if(£¡pBMI)¡¡¡¡{¡¡¡¡AfxMessageBox(¡å·ÖÅäÄÚ´æ³ö´í¡å)£»¡¡¡¡return false£»¡¡¡¡}¡¡¡¡memcpy(pBMI£¬&amp;bih£¬sizeof(BITMAPINFOHEADER))£»<!-- SIPO <DP n="15"> --><dp n="d15"/>¡¡¡¡DWORD dataBytes£½bfh.bfSize-bfh.bfOffBits£»¡¡¡¡m_size£½dataBytes£»¡¡¡¡pDIBData£½(BYTE*)new char[dataBytes]£»¡¡¡¡if(£¡pDIBData)¡¡¡¡{¡¡¡¡AfxMessageBox(¡å·ÖÅäÄÚ´æ³ö´í¡å)£»¡¡¡¡delete pBMI£»¡¡¡¡return false£»¡¡¡¡}¡¡¡¡if(file.ReadHuge(pDIBData£¬dataBytes)£¡£½dataBytes)¡¡¡¡{¡¡¡¡AfxMessageBox(¡å¶ÁÎļþ³ö´í¡å)£»¡¡¡¡delete pBMI£»¡¡¡¡delete pDIBData£»¡¡¡¡return false£»¡¡¡¡}¡¡¡¡file.Close()£»¡¡¡¡if(m_pBMI£¡£½NULL)¡¡¡¡delete m_pBMI£»¡¡¡¡m_pBMI£½pBMI£»¡¡¡¡if(m_pDIBData£¡£½NULL)¡¡¡¡delete m_pDIBData£»¡¡¡¡m_pDIBData£½pDIBData£»¡¡¡¡return true£»}void CDIB¡ËShowDIB(CDC*pDC£¬int nLeft£¬int nTop£¬int nWidth£¬int nHeight){¡¡¡¡pDC-£¾SetStretchBltMode(COLORONCOLOR)£»¡¡¡¡StretchDIBits(pDC-£¾GetSafeHdc()£¬nLeft£¬nTop£¬nWidth£¬nHeight£¬¡¡¡¡0£¬0£¬GetDIBWidth()£¬GetDIBHeight()£¬¡¡¡¡m_pDIBData£¬m_pBMI£¬DIB_RGB_COLORS£¬SRCCOPY)£»}////////////////////////////////////////////////////////////////////////////¡ÎCDIB message handlersDWORD CDIB¡ËGetPixel(int x£¬int y){<!-- SIPO <DP n="16"> --><dp n="d16"/>¡¡¡¡if(m_pDIBData£½£½NULL)¡¡¡¡{¡¡¡¡AfxMessageBox(¡åûÓмÓÔØÍ¼Ïñ£¡¡å)£»¡¡¡¡return-1£»¡¡¡¡}¡¡¡¡¡ÎÒ»ÐеÄ×Ö½ÚÊý¡£¡¡¡¡return dib_GetColor(m_pDIBData+m_nPitch*y+x+x+x)£»}void CDIB¡ËSetPixel(int x£¬int y£¬DWORD c){¡Îdib_SetColor((BYTE*)()£¬c)£»¡¡¡¡¡ÎÒ»ÐеÄ×Ö½ÚÊý¡£¡¡¡¡dib_SetColor((BYTE*)(m_pDIBData+m_nPitch*y+x+x+x)£¬c)£»}void CDIB¡ËSaveImage(LPCTSTR lpszName){¡¡¡¡BITMAPFILEHEADER bfh£»¡¡¡¡memset(&amp;bfh£¬0£¬sizeof(BITMAPFILEHEADER))£»¡¡¡¡BITMAPINFOHEADER bi£»¡¡¡¡bi.biSize £½sizeof(BITMAPINFOHEADER)£»¡¡¡¡bi.biWidth £½GetDIBWidth()£»¡¡¡¡bi.biHeight£½GetDIBHeight()£»¡¡¡¡bi.biPlanes £½1£»¡¡¡¡bi.biBitCount £½24£»¡Îm_dib.m_nPitch*m_dib.GetDIBHeight()£»¡¡¡¡bi.biCompression £½BI_RGB£»¡¡¡¡bi.biSizeImage £½0£»¡¡¡¡bi.biXPelsPerMeter £½0£»¡¡¡¡bi.biYPelsPerMeter £½0£»¡¡¡¡bi.biClrUsed £½0£»¡¡¡¡bi.biClrImportant £½0£»¡¡¡¡if(bi.biSizeImage£½£½0)¡¡¡¡bi.biSizeImage£½((((bi.biWidth*bi.biBitCount)+31)&amp;¡«31)/8)¡¡¡¡*bi.biHeight£»¡¡¡¡bfh.bfType£½((WORD)¡äB¡ä)¡äM¡ä£¼£¼8£»¡¡¡¡bfh.bfSize£½sizeof(BITMAPFILEHEADER)¡¡¡¡ +sizeof(BITMAPINFOHEADER)¡¡¡¡ +bi.biSizeImage£»¡¡¡¡bfh.bfOffBits£½sizeof(BITMAPFILEHEADER)¡¡¡¡ +sizeof(BITMAPINFOHEADER)£»<!-- SIPO <DP n="17"> --><dp n="d17"/>¡¡¡¡HANDLE hFile£½CreateFile(lpszName£¬GENERIC_WRITE£¬0£¬0£¬¡¡¡¡ CREATE_ALWAYS£¬0£¬0)£»¡¡¡¡DWORD dw£»¡¡¡¡WriteFile(hFile£¬&amp;bfh£¬sizeof(BITMAPFILEHEADER)£¬&amp;dw£¬NULL)£»¡¡¡¡WriteFile(hFile£¬&amp;bi£¬sizeof(BITMAPINFOHEADER)£¬&amp;dw£¬NULL)£»¡¡¡¡WriteFile(hFile£¬m_pDIBData£¬bi.biSizeImage£¬&amp;dw£¬NULL)£»¡¡¡¡CloseHandle(hFile)£»}int CDIB¡ËFindB(DWORD rgb){¡¡¡¡DWORD b£½rgb &amp; 0x000000ff£»return int(b)£»}int CDIB¡ËFindR(DWORD rgb){¡¡¡¡¡Î²éÕÒRGBÉ«²Ê¡¡¡¡DWORD r£½rgb &amp; 0x00ff0000£»¡¡¡¡r£½r/(16*16*16*16)£»¡¡¡¡return int(r)£»}int CDIB¡ËFindG(DWORD rgb){¡¡¡¡DWORD g£½rgb &amp; 0x0000ff00£»¡¡¡¡g£½g/(16*16)£»¡¡¡¡return int(g)£»}DWORD CDIB¡ËGetSize(){¡¡¡¡return m_size£»} ËÄ¡¢ÖíÈâÑÕÉ«µÈ¼¶Êä³öÄ£¿é(ͼƬ¸ñʽת»¯²Ù×÷Àà) #include¡åstdafx.h¡å#include¡åPicture.h¡å<!-- SIPO <DP n="18"> --><dp n="d18"/>¡¡¡¡#ifdet_DEBUG¡¡¡¡#define new DEBUG_NEW¡¡¡¡#undef THIS_FILE¡¡¡¡static char THIS_FILE[]£½_FILE_£»¡¡¡¡#endif¡¡¡¡#define HIMETRIC_INCH 2540¡¡¡¡#define ERROR_TITLE¡åCPicture Error¡å¡ÎError Title(Related To This Class)...¡¡¡¡¡Î-----------------------------------------------------------------------------¡¡¡¡¡ÎDoesConstructor-Create a New CPicture Object To Hold Pictre Data¡¡¡¡¡Î¡«¡«¡«¡«¡¡¡¡¡Î¡¡¡¡¡Î-----------------------------------------------------------------------------¡¡¡¡CPicture¡ËCPicture()¡¡¡¡¡Î£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½¡¡¡¡{¡¡¡¡m_IPicture£½NULL£»¡¡¡¡m_Height£½0£»¡¡¡¡m_Weight£½0£»¡¡¡¡m_Width£½0£»¡¡¡¡}¡¡¡¡¡Î-----------------------------------------------------------------------------¡¡¡¡¡ÎDoesDestructor-Free Data And Information From The CPicture Object¡¡¡¡¡Î¡«¡«¡«¡«¡¡¡¡¡Î¡¡¡¡¡Î-----------------------------------------------------------------------------¡¡¡¡CPicture¡Ë¡«CPicture()¡¡¡¡¡Î£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½¡¡¡¡{¡¡¡¡if(m_IPicture£¡£½NULL)FreePictureData()£»¡ÎImportant-Avoid Leaks...¡¡¡¡}¡¡¡¡void CPicture¡ËFreePictureData()¡¡¡¡¡Î£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½¡¡¡¡{¡¡¡¡if(m_IPicture £¡£½NULL)¡¡¡¡{¡¡¡¡m_IPicture-£¾Release()£»¡¡¡¡m_IPicture£½NULL£»¡¡¡¡m_Height£½0£»<!-- SIPO <DP n="19"> --><dp n="d19"/>¡¡¡¡m_Weight£½0£»¡¡¡¡m_Width£½0£»¡¡¡¡}¡¡¡¡}¡¡¡¡¡Î-----------------------------------------------------------------------------¡¡¡¡¡ÎDoesOpen a Resource And Load It Into IPicture(Interface)¡¡¡¡¡Î¡«¡«¡«¡« (.BMP.DIB.EMF.GIF.ICO.JPG.WMF)¡¡¡¡¡Î¡¡¡¡¡ÎNoteWhen Adding a Bitmap Resource It Would Automatically Show On¡åBitmap¡å¡¡¡¡¡Î¡«¡«¡«¡« This NOT Good Coz We Need To Load It From a Custom Resource¡åBMP¡å¡¡¡¡¡Î To Add a Custom RresourceImport Resource-£¾Open As-£¾Custom¡¡¡¡¡Î (Both.BMP And.DIB Should Be Found Under¡åBMP¡å)¡¡¡¡¡Î¡¡¡¡¡ÎInPut ResourceName-As a UINT Defined(ExampleIDR_PICTURE_RESOURCE)¡¡¡¡¡Î¡«¡«¡«¡«¡« ResourceType-Type Name(Example¡åJPG¡å)¡¡¡¡¡Î¡¡¡¡¡ÎOutPutTRUE If Succeeded...¡¡¡¡¡Î¡«¡«¡«¡«¡«¡«¡¡¡¡¡Î-----------------------------------------------------------------------------¡¡¡¡BOOL CPicture¡ËLoad(UINT ResourceName£¬LPCSTR ResourceType)¡¡¡¡¡Î£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½¡¡¡¡{¡¡¡¡BOOL bResult£½FALSE£»¡¡¡¡HGLOBAL hGlobal£½NULL£»¡¡¡¡HRSRChSource£½NULL£»¡¡¡¡LPVOID lpVoid £½NULL£»¡¡¡¡int nSize £½0£»¡¡¡¡if(m_IPicture£¡£½NULL)FreePictureData()£»¡ÎImportant-Avoid Leaks...¡¡¡¡hSource£½FindResource(AfxGetResourceHandle()£¬MAKEINTRESOURCE(ResourceName)£¬ResourceType)£»¡¡¡¡if(hSource£½£½NULL)¡¡¡¡{¡¡¡¡HWND hWnd£½AfxGetApp()-£¾GetMainWnd()-£¾m_hWnd£»¡¡¡¡MessageBoxEx(hWnd£¬¡åFindResource()Failed\t¡å£¬ERROR_TTTLE£¬MB_OK|MB_ICONSTOP£¬LANG_ENGLISH)£»¡¡¡¡return(FALSE)£»¡¡¡¡}<!-- SIPO <DP n="20"> --><dp n="d20"/>¡¡¡¡ hGlobal£½LoadResource(AfxGetResourceHandle()£¬hSource)£»¡¡¡¡ if(hGlobal£½£½NULL)¡¡¡¡ {¡¡¡¡ HWND hWnd£½AfxGetApp()-£¾GetMainWnd()-£¾m_hWnd£»¡¡¡¡ MessageBoxEx(hWnd£¬¡åLoadResource()Failed\t¡å£¬ERROR_TITLE£¬MB_OKMB_ICONSTOP£¬LANG_ENGLISH)£»¡¡¡¡ return(FALSE)£»¡¡¡¡ }¡¡¡¡ lpVoid£½LockResource(hGlobal)£»¡¡¡¡ if(lpVoid£½£½NULL)¡¡¡¡ {¡¡¡¡ HWND hWnd£½AfxGetApp()-£¾GetMainWnd()-£¾m_hWnd£»¡¡¡¡ MessageBoxEx(hWnd£¬¡åLockResource()Failed\t¡å£¬ERROR_TITLE£¬MB_OKMB_ICONSTOP£¬LANG_ENGLISH)£»¡¡¡¡ return(FALSE)£»¡¡¡¡ }¡¡¡¡ nSize£½(UINT)SizeofResource(AfxGetResourceHandle()£¬hSource)£»¡¡¡¡ if(LoadPictureData((BYTE*)hGlobal£¬nSize))bResult£½TRUE£»¡¡¡¡ UnlockResource(hGlobal)£»¡Î16Bit Windows Needs This¡¡¡¡ FreeResource(hGlobal)£»¡Î16Bit Windows Needs This(32Bit-Automatic Release)¡¡¡¡ m_Weight£½nSize£»¡ÎUpdate Picture Size Info...¡¡¡¡ if(m_IPicture£¡£½NULL)¡ÎDo Not Try To Read From Memory That Is Not Exist...¡¡¡¡ {¡¡¡¡ m_IPicture-£¾get_Height(&amp;m_Height)£»¡¡¡¡ m_IPicture-£¾get_Width(&amp;m_Width)£»¡¡¡¡ ¡ÎCalculate Its Size On a¡åStandard¡å(96 DPI)Device Context¡¡¡¡ m_Height£½MulDiv(m_Height£¬96£¬HIMETRIC_INCH)£»¡¡¡¡ m_Width£½MulDiv(m_Width£¬96£¬HIMETRIC_INCH)£»¡¡¡¡ }¡¡¡¡ else¡ÎPicture Data Is Not a Known Picture Type¡¡¡¡ {¡¡¡¡ m_Height£½0£»¡¡¡¡ m_Width£½0£»¡¡¡¡ bResult£½FALSE£»¡¡¡¡ }¡¡¡¡ return(bResult)£»¡¡¡¡ }<!-- SIPO <DP n="21"> --><dp n="d21"/>¡¡¡¡¡Î-----------------------------------------------------------------------------¡¡¡¡¡ÎDoesOpen a File And Load It Into IPicture(Intefface)¡¡¡¡¡Î¡«¡«¡«¡« (.BMP.DIB.EMF.GIF.ICO.JPG.WMF)¡¡¡¡¡Î¡¡¡¡¡ÎInPut sFilePathName-Path And FileName Target To Save¡¡¡¡¡Î¡«¡«¡«¡«¡«¡¡¡¡¡Î¡¡¡¡¡ÎOutPutTRUE If Succeeded...¡¡¡¡¡Î¡«¡«¡«¡«¡«¡«¡¡¡¡¡Î-----------------------------------------------------------------------------¡¡¡¡BOOL CPicture¡ËLoad(CString sFilePathName)¡¡¡¡¡Î£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½¡¡¡¡{¡¡¡¡BOOL bResult£½FALSE£»¡¡¡¡CFile PictureFile£»¡¡¡¡CFileException e£»¡¡¡¡int nSize£½0£»¡¡¡¡if(m_IPicture£¡£½NULL)FreePictureData()£»¡ÎImportant-Avoid Leaks...¡¡¡¡if(PictureFile.Open(sFilePathName£¬CFile¡ËmodeRead|CFile¡ËtypeBinary£¬&amp;e))¡¡¡¡ {¡¡¡¡ nSize£½PictureFile.GetLength()£»¡¡¡¡ BYTE*pBuffer£½new BYTE[nSize]£»¡¡¡¡ if(PictureFile.Read(pBufier£¬nSize)£¾0)¡¡¡¡{¡¡¡¡if(LoadPictureData(pBufier£¬nSize))bResult£½TRUE£»¡¡¡¡}¡¡¡¡ PictureFile.Close()£»¡¡¡¡ delete[]pBuffer£»¡¡¡¡ }¡¡¡¡else¡ÎOpen Failed...¡¡¡¡{¡¡¡¡TCHAR szCause[255]£»¡¡¡¡e.GetErrorMessage(szCause£¬255£¬NULL)£»¡¡¡¡CString str£½szCause£»¡¡¡¡if(str.Find(¡åsharing¡å)£¼0)¡¡¡¡{¡¡¡¡HWND hWnd£½AfxGetApp()-£¾GetMainWnd()-£¾m_hWnd£»¡¡¡¡MessageBoxEx(hWnd£¬szCause£¬ERROR_TITLE£¬MB_OK|MB_ICONSTOP£¬LANG_ENGLISH)£»<!-- SIPO <DP n="22"> --><dp n="d22"/>¡¡¡¡}¡¡¡¡bResult£½FALSE£»¡¡ }¡¡m_Weight£½nSize£»¡ÎUpdate Picture Size Info...if(m_IPicture£¡£½NULL)¡ÎDo Not Try To Read From Memory That Is Not Exist...{m_IPicture-£¾get_Height(&amp;m_Height)£»m_IPicture-£¾get_Width(&amp;m_Width)£»¡ÎCalculate Its Size On a¡åStandard¡å(96 DPI)Device Contextm_Height£½MulDiv(m_Height£¬96£¬HIMETRIC_INCH)£»m_Width£½MulDiv(m_Width£¬96£¬HIMETRIC_INCH)£»}else¡ÎPicture Data Is Not a Known Picture Type{m_Height£½0£»m_Width£½0£»bResult£½FALSE£»}return(bResult)£»}BOOL CPicture¡ËLoadPictureData(BYTE*pBuffer£¬int nSize)¡Î£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½{BOOL bResult£½FALSE£»HGLOBAL hGlobal£½GlobalAlloc(GMEM_MOVEABLE£¬nSize)£»if(hGlobal£½£½NULL){HWND hWnd£½AfxGetApp()-£¾GetMainWnd()-£¾m_hWnd£»MessageBoxEx(hWnd£¬¡åCan not allocate enough memory\t¡å£¬ERROR_TITLE£¬MB_OK |MB_ICONSTOP£¬LANG_ENGLISH)£»return(FALSE)£»}void*pData£½GlobalLock(hGlobal)£»memcpy(pData£¬pBuffer£¬nSize)£»GlobalUnlock(hGlobal)£»IStream*pStream£½NULL£»<!-- SIPO <DP n="23"> --><dp n="d23"/>¡¡¡¡if(CreateStreamOnHGlobal(hGlobal£¬TRUE£¬&amp;pStream)£½£½S_OK)¡¡¡¡{¡¡¡¡HRESULT hr£»¡¡¡¡if((hr£½OleLoadPicture(pStream£¬nSize£¬FALSE£¬IID_IPicture£¬(LPVOID*)&amp;m_IPicture))£½£½E_NOINTERFACE)¡¡¡¡{¡¡¡¡HWND hWnd£½AfxGetApp()-£¾GetMainWnd()-£¾m_hWnd£»¡¡¡¡MessageBoxEx(hWnd£¬¡åIPicture interface is not supported\t¡å£¬ERROR_TITLE£¬MB_OK|MB_ICONSTOP£¬LANG_ENGLISH)£»¡¡¡¡return(FALSE)£»¡¡¡¡}¡¡¡¡else¡ÎS_OK¡¡¡¡{¡¡¡¡pStream-£¾Release()£»¡¡¡¡pStream£½NULL£»¡¡¡¡bResult£½TRUE£»¡¡¡¡}¡¡¡¡}¡¡¡¡FreeResource(hGlobal)£»¡Î16Bit Windows Needs This(32Bit-Automatic Release)¡¡¡¡return(bResult)£»¡¡¡¡}¡¡¡¡BOOL CPicture¡ËShow(CDC*pDC£¬CRect DrawRect)¡¡¡¡¡Î£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½¡¡¡¡{¡¡¡¡if(pDC£½£½NULL¡¬m_IPicture£½£½NULL)return FALSE£»¡¡¡¡long Width£½0£»¡¡¡¡long Height£½0£»¡¡¡¡m_IPicture->get_Width(&amp;Width)£»¡¡¡¡m_IPicture-£¾get_Height(&amp;Height)£»¡¡¡¡HRESULT hrP£½NULL£»¡¡¡¡hrP£½m_IPicture-£¾Render(pDC-£¾m_hDC£¬¡¡¡¡ DrawRect.left£¬¡ÎLeft¡¡¡¡ DrawRect.top£¬ ¡ÎTop¡¡¡¡ DrawRect.right-DrawRect.left£¬¡ÎRight¡¡¡¡ DrawRect.bottom-DrawRect.top£¬¡ÎBottom<!-- SIPO <DP n="24"> --><dp n="d24"/>¡¡¡¡ 0£¬¡¡¡¡ Height£¬¡¡¡¡ Width£¬¡¡¡¡ -Height£¬¡¡¡¡ &amp;DrawRect)£»¡¡¡¡if(SUCCEEDED(hrP))return(TRUE)£»¡¡¡¡HWND hWnd£½AfxGetApp()-£¾GetMainWnd()-£¾m_hWnd£»¡¡¡¡MessageBoxEx(hWnd£¬¡åCan not allocate enough memory\t¡å£¬ERROR_TITLE£¬MB_OK|MB_ICONSTOP£¬LANG_ENGLISH)£»¡¡¡¡return(FALSE)£»¡¡¡¡}¡¡¡¡¡Î-----------------------------------------------------------------------------¡¡¡¡¡ÎDoesDraw The Loaded Picture Direct To The Client DC¡¡¡¡¡Î¡«¡«¡«¡«¡¡¡¡¡Î¡¡¡¡¡ÎNoteBigger OR Smaller Dimentions Than The Original Picture Size¡¡¡¡¡Î¡«¡«¡«¡« Will Draw The Picture Streached To Its New Given Dimentions...¡¡¡¡¡Î¡¡¡¡¡ÎInPut pDC-Given DC To Draw On¡¡¡¡¡Î¡«¡«¡«¡«¡« LeftTop-Opening Point To Start Drawing(Left£¬Top)¡¡¡¡¡Î WidthHeight-Dimentions Of The Picture To Draw(Width£¬Height)¡¡¡¡¡Î MagnifyX-Magnify Pixel Width£¬0£½Default(No Magnify)¡¡¡¡¡Î MagnifyY-Magnify Pixel Height£¬0£½Default(No Magnify)¡¡¡¡¡Î¡¡¡¡¡ÎOutPutTRUE If Succeeded...¡¡¡¡¡Î¡«¡«¡«¡«¡«¡«¡¡¡¡¡Î-----------------------------------------------------------------------------¡¡¡¡BOOL CPicture¡ËShow(CDC*pDC£¬CPoint LeftTop£¬CPoint WidthHeight£¬int MagnifyX£¬intMagnifyY)¡¡¡¡¡Î£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½¡¡¡¡{¡¡¡¡if(pDC£½£½NULL¡¬m_IPicture£½£½NULL)return FALSE£»¡¡¡¡long Width£½0£»¡¡¡¡long Height£½0£»¡¡¡¡m_IPicture-£¾get_Width(&amp;Width)£»¡¡¡¡m_IPicture-£¾get_Height(&amp;Height)£»¡¡¡¡if(MagnifyX£½£½NULL)MagnifyX£½0£»¡¡¡¡if(MagnifyY£½£½NULL)MagnifyY£½0£»¡¡¡¡MagnifyX£½int(MulDiv(Width£¬pDC-£¾GetDeviceCaps(LOGPIXELSX)£¬HIMETRIC_INCH)*<!-- SIPO <DP n="25"> --><dp n="d25"/>MagnifyX)£»¡¡¡¡MagnifyY£½int(MulDiv(Height£¬pDC-£¾GetDeviceCaps(LOGPIXELSY)£¬HIMETRIC_INCH)*Magnifyy)£»¡¡¡¡CRect DrawRect(LeftTop.x£¬LeftTop.y£¬MagnifyX£¬Magnifyy)£»¡¡¡¡HRESULT hrP£½NULL£»¡¡¡¡¡¡¡¡hrp£½m_IPicture->Render(pDC->m_hDC£¬¡¡¡¡ LeftTop.x£¬ ¡ÎLeft¡¡¡¡ LeftTop.y£¬ ¡ÎTop¡¡¡¡ WidthHeight.x+MagnifyX£¬¡ÎWidth¡¡¡¡ WidthHeight.y+MagnifyY£¬¡ÎHeight¡¡¡¡ 0£¬¡¡¡¡ Height£¬¡¡¡¡ Width£¬¡¡¡¡ -Height£¬¡¡¡¡ &amp;DrawRect)£»¡¡¡¡if(SUCCEEDED(hrP))return(TRUE)£»¡¡¡¡HWND hWnd£½AfxGetApp()-£¾GetMainWnd()-£¾m_hWnd£»¡¡¡¡MessageBoxEx(hWnd£¬¡åCan not allocate enough memory\t¡å£¬ERROR_TITLE£¬MB_OK|MB_ICONSTOP£¬LANG_ENGLISH)£»¡¡¡¡return(FALSE)£»¡¡¡¡}¡¡¡¡¡Î-----------------------------------------------------------------------------¡¡¡¡¡ÎDoesSaves The Picture That Is Stored In The IPicture Object As a Bitmap¡¡¡¡¡Î¡«¡«¡«¡« (Converts From Any Known Picture Type To a Bitmap/Icon File)¡¡¡¡¡Î¡¡¡¡¡ÎInPut sFilePathName-Path And FileName Target To Save¡¡¡¡¡Î¡«¡«¡«¡«¡«¡¡¡¡¡Î¡¡¡¡¡ÎOutPutTRUE If Succeeded...¡¡¡¡¡Î¡«¡«¡«¡«¡«¡«¡¡¡¡¡Î-----------------------------------------------------------------------------¡¡¡¡BOOL CPicture¡ËSaveAsBitmap(CString sFilePathName)¡¡¡¡¡Î£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½¡¡¡¡{¡¡¡¡BOOL bResult£½FALSE£»¡¡¡¡ILockBytes*Buffer£½0£»¡¡¡¡IStorage *pStorage£½0£»<!-- SIPO <DP n="26"> --><dp n="d26"/>¡¡¡¡IStream *FileStream£½0£»¡¡¡¡BYTE *BufferBytes£»¡¡¡¡STATSTG BytesStatistics£»¡¡¡¡DWORD OutData£»¡¡¡¡longOutStream£»¡¡¡¡CFile BitmapFile£»CFileException e£»¡¡¡¡double SkipFloat£½0£»¡¡¡¡DWORD ByteSkip£½0£»¡¡¡¡_ULARGE_INTEGER RealData£»¡¡¡¡CreateILockBytesOnHGlobal(NULL£¬TRUE£¬&amp;Buffer)£»¡ÎCreate ILockBytes Buffer¡¡¡¡HRESULT hr£½¡ËStgCreateDocfileOnILockBytes(Buffer£¬¡¡¡¡ STGM_SHARE_EXCLUSIVE|STGM_CREATE|STGM_READWRITE£¬0£¬&amp;pStorage)£»¡¡¡¡hr£½pStorage-£¾CreateStream(L¡åPICTURE¡å£¬¡¡¡¡ STGM_SHARE_EXCLUSIVE|STGM_CREATE|STGM_READWRITE£¬0£¬0£¬&amp;FileStream)£»¡¡¡¡m_IPicture-£¾SaveAsFile(FileStream£¬TRUE£¬&amp;OutStream)£»¡ÎCopy Data Stream¡¡¡¡FileStream-£¾Release()£»¡¡¡¡pStorage-£¾Release()£»¡¡¡¡Buffer-£¾Flush()£»¡¡¡¡¡Îm_IPicture-£¾SaveAsFile(¡¡¡¡¡ÎGet Statistics For Final Size Of Byte Array¡¡¡¡Buffer-£¾Stat(&amp;BytesStatistics£¬STATFLAG_NONAME)£»¡¡¡¡¡ÎCut UnNeeded Data Coming From SaveAsFile()(Leave Only¡åPure¡åPicture Data)¡¡¡¡SkipFloat£½(double(OutStream)/512)£»¡ÎMust Be In a 512 Blocks...¡¡¡¡if(SkipFloat£¾DWORD(SkipFloat))ByteSkip£½(DWORD)SkipFloat+1£»¡¡¡¡else ByteSkip£½(DWORD)SkipFloat£»¡¡¡¡ByteSkip£½ByteSkip*512£»¡ÎMust Be In a 512 Blocks...¡¡¡¡¡ÎFind Difference Between The Two Values¡¡¡¡ByteSkip£½(DWORD)(BytesStatistics.cbSize.QuadPart-ByteSkip)£»¡¡¡¡¡ÎAllocate Only The¡åPure¡åPicture Data¡¡¡¡RealData.LowPart£½0£»¡¡¡¡RealData.HighPart£½0£»¡¡¡¡RealData.QuadPart£½ByteSkip£»¡¡¡¡BufferBytes£½(BYTE*)malloc(OutStream)£»¡¡¡¡if(BufferBytes£½£½NULL)¡¡¡¡{¡¡¡¡Buffer-£¾Release()£»<!-- SIPO <DP n="27"> --><dp n="d27"/>¡¡¡¡HWND hWnd£½AfxGetApp()-£¾GetMainWnd()-£¾m_hWnd£»¡¡¡¡MessageBoxEx(hWnd£¬¡åCan not allocate enough memory\t¡å£¬ERROR_TITLE£¬MB_OK|MB_ICONSTOP£¬LANG_ENGLISH)£»¡¡¡¡}¡¡¡¡ Buffer-£¾ReadAt(RealData£¬BufferBytes£¬OutStream£¬&amp;OutData)£»¡¡¡¡ if(BitmapFile.Open(sFilePathName£¬CFile¡ËtypeBinary|CFile¡ËmodeCreate|CFile¡ËmodeWrite£¬&amp;e))¡¡¡¡{¡¡¡¡BitmapFile.Write(BufferBytes£¬OutData)£»¡¡¡¡BitmapFile.Close()£»¡¡¡¡bResult£½TRUE£»¡¡¡¡}¡¡¡¡else¡ÎWrite File Failed...¡¡¡¡{¡¡¡¡TCHAR szCause[255]£»¡¡¡¡e.GetErrorMessage(szCause£¬255£¬NULL)£»¡¡¡¡HWND hWnd£½AfxGetApp()-£¾GetMainWnd()-£¾m_hWnd£»¡¡¡¡ MessageBoxEx(hWnd£¬szCause£¬ERROR_TITLE£¬MB_OK|MB_ICONSTOP£¬LANG_ENGLISH)£»¡¡¡¡bResult£½FALSE£»¡¡¡¡}¡¡¡¡Buffer-£¾Release()£»¡¡¡¡free(BufferBytes)£»¡¡¡¡return(bResult)£»¡¡¡¡}¡¡¡¡BOOL CPicture¡ËShowBitmapResource(CDC*pDC£¬const int BMPResource£¬CPoint LeftTop)¡¡¡¡¡Î£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½¡¡¡¡{¡¡¡¡if(pDC£½£½NULL)return(FALSE)£»¡¡¡¡CBitmap BMP£»¡¡¡¡if(BMP.LoadBitmap(BMPResource))¡¡¡¡{¡¡¡¡¡ÎGet Bitmap Details¡¡¡¡BITMAP BMPInfo£»¡¡¡¡BMP.GetBitmap(&amp;BMPInfo)£»¡¡¡¡¡ÎCreate An In-Memory DC Compatible With The Display DC We R Gonna Paint On¡¡¡¡CDC DCMemory£»¡¡¡¡DCMemory.CreateCompatibleDC(pDC)£»¡¡¡¡¡ÎSelect The Bitmap Into The In-Memory DC¡¡¡¡CBitmap*pOldBitmap£½DCMemory.SelectObject(&amp;BMP)£»¡¡¡¡¡ÎCopy Bits From The In-Memory DC Into The On-Screen DC¡¡¡¡pDC-£¾BitBlt(LeftTop.x£¬LeftTop.y£¬BMPInfo.bmWidth£¬BMPInfo.bmHeight£¬&amp;DCMemory£¬0£¬0£¬SRCCOPY)£»<!-- SIPO <DP n="28"> --><dp n="d28"/>¡¡¡¡DCMemory.SelectObject(pOldBitmap)£»¡Î(As Shown In MSDN Example...)¡¡¡¡}¡¡¡¡else¡¡¡¡{¡¡¡¡TRACE0(¡åERRORCan Not Find The Bitmap Resource\n¡å)£»¡¡¡¡return(FALSE)£»¡¡¡¡}¡¡¡¡return(TRUE)£»¡¡¡¡}¡¡¡¡¡Î-----------------------------------------------------------------------------¡¡¡¡¡ÎDoesGet The Original Picture Pixel Size(Ignor What Current DC Is Using)¡¡¡¡¡Î¡«¡«¡«¡« Pointer To a Device Context Is Needed For Pixel Calculation£¬¡¡¡¡¡Î¡¡¡¡¡Î Also Updates The Class¡äs Height And Width Properties£¬¡¡¡¡¡Î (Coz Till Now We Had No Device Context To Work With...96 DPI Assumed)¡¡¡¡¡Î¡¡¡¡¡ÎInPut The Client DC(Needed To Check The Size Of The Pixels)¡¡¡¡¡Î¡«¡«¡«¡«¡«¡¡¡¡¡Î¡¡¡¡¡ÎOutPutTRUE If Succeeded...¡¡¡¡¡Î¡«¡«¡«¡«¡«¡«¡¡¡¡¡Î-----------------------------------------------------------------------------¡¡¡¡BOOL CPicture¡ËUpdateSizeOnDC(CDC*pDC)¡¡¡¡¡Î£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½£½¡¡¡¡{¡¡¡¡if(pDC£½£½NULL¡¬m_IPicture£½£½NULL){m_Height£½0£»m_Width£½0£»return(FALSE)£»}£»¡¡¡¡m_IPicture-£¾get_Height(&amp;m_Height)£»¡¡¡¡m_IPicture-£¾get_Width(&amp;m_Width)£»¡¡¡¡ ¡ÎGet Current DPI-Dot Per Inch¡¡¡¡int CurrentDPI_X£½pDC-£¾GetDeviceCaps(LOGPIXELSX)£»¡¡¡¡int CurrentDPI_Y£½pDC-£¾GetDeviceCaps(LOGPIXELSY)£»¡¡¡¡ ¡ÎUse a¡åStandard¡åPrint(When Printing)¡¡¡¡if(pDC-£¾IsPrinting())¡¡¡¡{¡¡¡¡CurrentDPI_X£½96£»¡¡¡¡CurrentDPI_Y£½96£»¡¡¡¡}¡¡¡¡m_Height£½MulDiv(m_Height£¬CurrentDPI_Y£¬HIMETRIC_INCH)£»¡¡¡¡m_Width £½MulDiv(m_Width£¬CurrentDPI_X£¬HIMETRIC_INCH)£»¡¡¡¡return(TRUE)£»¡¡¡¡}
ȨÀûÒªÇó
1¡¢Ò»ÖÖÖíÈâÑÕÉ«·Ö¼¶ÒÇÆ÷£¬°üÀ¨Í¼Ïñ²É¼¯É豸ºÍÖíÈâÑÕÉ«·Ö¼¶Èí¼þ£¬ÆäÌØÕ÷ÔÚÓÚ
(1)ͼÏñ»ñÈ¡É豸°üÀ¨Í¼Ïñ²É¼¯ÊÒ4¡¢ÊýÂëÏà»ú5
ͼÏñ²É¼¯ÊÒ4Ϊֱ¾¶Îª600mmµÄ°ëÇòÐÎÄ͸ßβÄÁÏÖÆ³É£¬ÄÚ±ÚÍ¿³É°×É«£¬4¸ö50WÂ±ËØµÆ1µÈ¼ä¾à°²×°ÓÚͼÏñ²É¼¯ÊÒ4µÄµ×²¿£¬Í¼Ïñ²É¼¯ÊÒ4ÄÚµÄÔØÑų̀2ÃæÎªÓÃϸɰ²¼´òÄ¥¹ýµÄºÚÉ«Ï𽺰壬ÑùÆ·3ÖÃÓÚÏ𽺰åÉÏ£¬Í¼Ïñ²É¼¯ÊÒ4¶¥¶Ë¿ªÒ»Ö±¾¶Îª45mmÔ²¿×£»
Ñ¡ÓÃCANON-PowerShotA70ÊýÂëÏà»ú5£¬¾µÍ·´©¹ýÓÚͼÏñ²É¼¯ÊÒ4¶¥Ô²¿×£»
(2)ÖíÈâÑÕÉ«·Ö¼¶Èí¼þ
ÖíÈâÑÕÉ«¼ÆËã»ú·Ö¼¶Èí¼þÓÉͼÏñÊäÈë¿ØÖÆÄ£¿é¡¢Í¼Ïñ·Ö¸îÓëʶ±ðÄ£¿é¡¢Í¼ÏñÑÕÉ«ÌØÕ÷²ÎÊýÌáȡģ¿é¡¢ÖíÈâÑÕÉ«µÈ¼¶Êä³öÄ£¿é×é³É
a¡¢Í¼ÏñÊäÈë¿ØÖÆÄ£¿é¿ÉÒÔ×Ô¶¯´ò¿ªÊýÂëÏà»ú5¾µÍ·¡¢×Ô¶¯ÅÄÉãÑùÆ·3µÄ²ÊɫͼÏñ£»
b¡¢Í¼Ïñ·Ö¸îÓëʶ±ðÄ£¿éÓÃÓÚ¶ÔÊäÈëµÄ²ÊɫͼÏñ½øÐÐÈ¥Ô롢ȥ±³¾°¡¢±ßÔµÌáÈ¡£¬×îÖÕ»ñÈ¡ÖíÈâͼÏñµÄÓÐÐ§ÌØÕ÷ÑÕÉ«ÌáÈ¡ÇøÓò£»
c¡¢Í¼ÏñÑÕÉ«ÌØÕ÷²ÎÊýÌáȡģ¿éÓÃÓÚ¶ÔͼÏñ·Ö¸îÓëʶ±ðÄ£¿é»ñÈ¡µÄÓÐЧÑÕÉ«ÌáÈ¡ÇøÓòÌáȡͼÏñµÄÑÕÉ«ÌØÕ÷²ÎÊý£¬°üÀ¨ºìÉ«R¡¢ÂÌÉ«G¡¢À¶É«B¡¢É«²ÊH¡¢±¥ºÍ¶ÈS¡¢ÁÁ¶ÈV£»
d¡¢ÖíÈâÑÕÉ«µÈ¼¶Êä³öÄ£¿éÓÃÓÚµ÷ÓÃÖíÈâÑÕÉ«µÈ¼¶Ä£ÐÍÖíÈâÑÕÉ«µÈ¼¶G£½4.62+6.63*S-10.20*V£¬Êä³öÖíÈâÑÕÉ«¼¶±ð¡£
È«ÎÄÕªÒª
±¾Ïî·¢Ã÷¡°ÖíÈâÑÕÉ«·Ö¼¶ÒÇ¡±ÊôÓÚÅ©²úÆ·ÖÊÁ¿×Ô¶¯·Ö¼¶ÁìÓò£¬°üÀ¨Í¼Ïñ²É¼¯É豸ºÍÖíÈâÑÕÉ«·Ö¼¶Èí¼þ¡£Í¼Ïñ²É¼¯ÊÒ4Ϊֱ¾¶Îª600mmµÄ°ëÇòÐÎÄ͸ßβÄÁÏÖÆ³É£¬ÄÚ±ÚÍ¿³É°×É«£¬4¸ö50WÂ±ËØµÆ1µÈ¼ä¾à°²×°ÓÚͼÏñ²É¼¯ÊÒ4µÄµ×²¿£¬ÑùÆ·3ÖÃÓÚͼÏñ²É¼¯ÊÒ4ÄÚµÄÔØÑų̀2ÉÏ£¬Ñ¡ÓÃCANON£­Power Shot A70ÊýÂëÏà»ú5£¬¾µÍ·´©¹ýÓÚͼÏñ²É¼¯ÊÒ4¶¥Ô²¿×£»·Ö¼¶Èí¼þÓÉͼÏñÊäÈë¿ØÖÆÄ£¿é¡¢Í¼Ïñ·Ö¸îÓëʶ±ðÄ£¿é¡¢Í¼ÏñÑÕÉ«ÌØÕ÷²ÎÊýÌáȡģ¿é¡¢ÖíÈâÑÕÉ«µÈ¼¶Êä³öÄ£¿é×é³É£¬ÖíÈâÑÕÉ«µÈ¼¶G£½4.62+6.63*S£­10.20*V¡£±¾·¢Ã÷¿ÉÒÔ½«ÖíÈâ°´ÕÕÖíÈâÑÕÉ«·Ö¼¶±ê×¼½øÐмÆËã»úÔÚÏß·Ö¼¶£¬Ö¸µ¼ÖíÈâ¡°°´¼¶ÂÛ¼Û¡±£¬ÊÊÓÃÓÚ³¬ÊÐÁãÊÛ¡£
Îĵµ±àºÅG01N21/84GK1619295SQ20041009890
¹«¿ªÈÕ2005Äê5ÔÂ25ÈÕ ÉêÇëÈÕÆÚ2004Äê12ÔÂ10ÈÕ ÓÅÏÈȨÈÕ2004Äê12ÔÂ10ÈÕ
·¢Ã÷ÕßÐìÐÒÁ«, ÅíÔöÆð, ½­Áú½¨ ÉêÇëÈË:ÄϾ©Å©Òµ´óѧ

  • רÀûÃû³Æ£ºµçÓ¾ÓÃÆ÷¾ß¼°µçÓ¾×°ÖõÄÖÆ×÷·½·¨¼¼ÊõÁìÓò£º±¾·¢Ã÷Éæ¼°µçÓ¾ÓÃÆ÷¾ß¼°¾ß±¸¸ÃµçÓ¾ÓÃÆ÷¾ßµÄµçÓ¾×°Öᣱ¾ÉêÇë»ùÓÚ2009Äê12ÔÂ24ÈÕÔÚÈÕ±¾ÉêÇëµÄÌØÔ¸2009-292323ºÅ¶øÖ÷ÕÅÓÅÏÈȨ£¬²¢½«ÆäÄÚÈÝÔ®ÒýÓÚ´Ë¡£±³¾°¼¼Êõ£ºÔÚºó»ùÒòÌåÖУ¬µ°°×ÖÊÌåÑÐ
  • רÀûÃû³Æ£º»ùÓÚ°×¹âledÆ÷¼þµÄÆøÏó¼à²âϵͳµÄÖÆ×÷·½·¨¼¼ÊõÁìÓò£º±¾ÊµÓÃÐÂÐÍÉæ¼°ÁËÒ»ÖÖ»ùÓÚ°×¹âLEDÆ÷¼þµÄÆøÏó¼à²âϵͳ¡£±³¾°¼¼Êõ£ºÀûÓð׹âLEDÆ÷¼þµÄ¸ßËÙÏìÓ¦ÌØÐÔ£¬ÔÚLED¹âÔ´ÕÕÃ÷µÄͬʱ£¬ÀûÓÃÊý¾ÝÊä³öÄ£¿éºÍÆ«ÖÃÆ÷£¬¿ÉÒÔ¸ßËÙµ÷ÖÆLEDÆ÷¼þµÄÊä³öµç
  • רÀûÃû³Æ£ºÒ»ÖÖµç»ú¹ýÁ÷¼ì²âµç·µÄÖÆ×÷·½·¨¼¼ÊõÁìÓò£º±¾·¢Ã÷Éæ¼°©`ÖÖÓ¦Óõç·£¬¾ßÌåµÄÉæ¼°©`ÖÖµç»ú¹ýÁ÷¼ì²âµç·¡£±³¾°¼¼Êõ£ºÏÖÓеĵç»ú¹ýÁ÷¼ì²âµç·ÐÎÐÎɫɫÖÖÀà·±¶à£¬µ«´ó¶à½á¹¹¸´ÔÓ¡¢²»Ò×µ÷ÕûºÍÏìÓ¦ËÙ¶ÈÂý£¬¶ø²ÉÓø´Ôӵ緽ṹµÄÇý¶¯µç·À´Íê³Éµç»ú¹ýµçÁ÷¼ì
  • רÀûÃû³Æ£ºÒ»ÖÖµçÄܱíÓÃËÜ·âÍâ¸ÇµÄÖÆ×÷·½·¨¼¼ÊõÁìÓò£º±¾ÊµÓÃÐÂÐÍÉæ¼°µçÄܱíÓÃËÜ·â½á¹¹£¬ÌرðÊÇËÜ·âµÄÍâ¸Ç½á¹¹¡£±³¾°¼¼Êõ£ºÒÔǰ£¬·ÀÖ¹ËæÒâ´ò¿ªµçÄܱí±à³Ì¿ª¹Ø¸ÇÊÇͨ¹ýǦ·âʵÏÖ£¬Ç¦·âÊÇÓÉÍ­Ë¿ÓëС15. 5mmµÄǦñº¸Îý¶ø³É£¬Æä·½·¨Êǽ«±à³Ì¿ª¹Ø¸ÇÓÃÊ®×ÖÔ²Öù
  • רÀûÃû³Æ£ºÊ¯Ä«Ï©Á¿×ÓµãÐÞÊεĵ绯ѧ´«¸ÐÆ÷¼°ÆäÖÆ±¸·½·¨ºÍÓ¦ÓõÄÖÆ×÷·½·¨¼¼ÊõÁìÓò£º±¾·¢Ã÷Éæ¼°Ò»Öֵ绯ѧ´«¸ÐÆ÷µÄÖÆ±¸£¬¾ßÌåÉæ¼°Ò»ÖÖʯīϩÁ¿×ÓµãÐÞÊνðµç¼«µÄµç»¯Ñ§´«¸ÐÆ÷¼°Æä¶Ô»îϸ°ûÊͷŵÄH2O2º¬Á¿µÄ¼ì²â¡£±³¾°¼¼Êõ£ºÏ¸°û´úл¹ý³ÌÖвúÉúµÄһϵÁлîÐÔÑõ
  • רÀûÃû³Æ£º¿ìËÙ×Ô·´À¡É¨Ãèϵͳ¼°¿ØÖÆ·½·¨¼¼ÊõÁìÓò£º±¾·¢Ã÷Éæ¼°Ò»ÖÖɨÃèϵͳ£¬ÓÈÆäÉæ¼°Ò»ÖÖ¿ìËÙ×Ô·´À¡É¨Ãèϵͳ¼°¿ØÖÆ·½·¨¡£±³¾°¼¼Êõ£ºÄ¿Ç°É¨Ãè×°ÖýøÐÐɨÃèʱ£¬Ö»ÐèÒªºÍ¼ÆËã»úʵÏÖÁ¬½Ó£¬ÆäÖмÆËã»úÖеÄÏÔ¿¨ºÍɨÃè×°ÖÃÖеÄͶӰÒÇÏàÁ¬£¬É¨Ãè×°ÖÃÖеÄÁ½¸öÏà»úÔÙºÍ
ɽ¶«ÑÇÐÇÓÎÏ·¹ÙÍø»ú´²ÓÐÏÞ¹«Ë¾
È«¹ú·þÎñÈÈÏߣº13062023238
µç»°£º13062023238
µØÖ·£ºëøÖÝÊÐÁúȪ¹¤ÒµÔ°68ºÅ
¹Ø¼ü´Ê£ºÏ³´²£¬Êý¿ØÏ³´²£¬ÁúÃÅϳ´²
¹«Ë¾¶þάÂë
Copyright 2010-2024 °æÈ¨ËùÓÐ All rights reserved ³ICP±¸19044495ºÅ-12
¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿