• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            MFC使用自定義資源加載PNG

            在MFC中,使用資源中的BMP是簡(jiǎn)單的,但是若是使用其他的圖片資源,卻是不容易的.
            以下為解決辦法.

            首先,在Resource.h里面定義ID:
            #define IDB_BG                          131

            然后在rc文件里面添加代碼:
            IDB_BG                  RCPNG                   "res\\背景.png"
            其中,RCPNG為自定義資源類型的名稱,當(dāng)然,至于你需要如何去命名就是你的事情了.

            然后我們需要CImage這個(gè)ATL類,以及以下這個(gè)方法:
            //////////////////////////////////////////////////////////////////////////
            /// 從資源文件中加載圖片
            /// @param [in] pImage 圖片指針
            /// @param [in] nResID 資源號(hào)
            /// @param [in] lpTyp 資源類型
            //////////////////////////////////////////////////////////////////////////

            static bool LoadImageFromResource(IN CImage* pImage,
                                       IN UINT nResID, 
                                       IN LPCSTR lpTyp)
            {
                
            if ( pImage == NULL) return false;

                pImage
            ->Destroy();

                
            // 查找資源
                HRSRC hRsrc = ::FindResource(AfxGetResourceHandle(), MAKEINTRESOURCE(nResID), lpTyp);
                
            if (hRsrc == NULL) return false;

                
            // 加載資源
                HGLOBAL hImgData = ::LoadResource(AfxGetResourceHandle(), hRsrc);
                
            if (hImgData == NULL)
                
            {
                    ::FreeResource(hImgData);
                    
            return false;
                }


                
            // 鎖定內(nèi)存中的指定資源
                LPVOID lpVoid    = ::LockResource(hImgData);

                LPSTREAM pStream 
            = NULL;
                DWORD dwSize    
            = ::SizeofResource(AfxGetResourceHandle(), hRsrc);
                HGLOBAL hNew    
            = ::GlobalAlloc(GHND, dwSize);
                LPBYTE lpByte    
            = (LPBYTE)::GlobalLock(hNew);
                ::memcpy(lpByte, lpVoid, dwSize);

                
            // 解除內(nèi)存中的指定資源
                ::GlobalUnlock(hNew);

                
            // 從指定內(nèi)存創(chuàng)建流對(duì)象
                HRESULT ht = ::CreateStreamOnHGlobal(hNew, TRUE, &pStream);
                
            if ( ht != S_OK )
                
            {
                    GlobalFree(hNew);
                }

                
            else
                
            {
                    
            // 加載圖片
                    pImage->Load(pStream);

                    GlobalFree(hNew);
                }


                
            // 釋放資源
                ::FreeResource(hImgData);

                
            return true;
            }

            在CImage類里面有一個(gè)方法CImage::LoadFromResource,可是它實(shí)際上是調(diào)用到了LoadImage這個(gè)方法,完全是沒(méi)用滴.

            有了以上的代碼,然后就可以寫(xiě)邏輯代碼了:
            LoadImageFromResource(&m_ImaBg, IDB_BG, _T("RCPNG") );


            參考資料:
            供CImage類顯示的半透明PNG文件處理方法 http://blog.sina.com.cn/s/blog_4070692f010003gy.html
            強(qiáng)大的CImage類 http://www.cnblogs.com/s5689412/articles/149329.html

            posted on 2010-02-27 17:01 楊粼波 閱讀(6441) 評(píng)論(5)  編輯 收藏 引用

            評(píng)論

            # re: MFC使用自定義資源加載PNG 2011-03-03 15:49 Daywei

            晚輩向前輩請(qǐng)教: 那這種方法支持其png圖片原來(lái)的透明效果嗎?我試了你的方法圖片是顯示了,但背景是黑的,請(qǐng)教如何解決?  回復(fù)  更多評(píng)論   

            # re: MFC使用自定義資源加載PNG[未登錄](méi) 2011-03-09 18:38 楊粼波

            你的繪制方法不對(duì)吧。  回復(fù)  更多評(píng)論   

            # re: MFC使用自定義資源加載PNG 2013-12-10 15:13 jasminezdf

            我也出現(xiàn)了黑色的背景,請(qǐng)問(wèn)樓上的這個(gè)問(wèn)題最后是怎么解決的?@Daywei
              回復(fù)  更多評(píng)論   

            # re: MFC使用自定義資源加載PNG 2015-05-25 21:33 mike

            請(qǐng)問(wèn)LoadImageFromResource這個(gè)方法要在哪里定義啊,原來(lái)的類里好像沒(méi)這個(gè)方法  回復(fù)  更多評(píng)論   

            # re: MFC使用自定義資源加載PNG[未登錄](méi) 2015-06-12 15:07 楊粼波

            @mike
            哥~這個(gè)是自己寫(xiě)的方法,你隨便放哪里都可以啊。  回復(fù)  更多評(píng)論   


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            性做久久久久久久久浪潮| 色综合久久中文综合网| 久久婷婷五月综合97色 | 久久综合噜噜激激的五月天| 97久久综合精品久久久综合| 久久精品国产只有精品66 | 色综合合久久天天综合绕视看 | 久久夜色精品国产网站| 久久精品不卡| 国产亚洲婷婷香蕉久久精品| 久久天天躁狠狠躁夜夜不卡| 久久天堂电影网| 亚洲日本va中文字幕久久| 国产成人综合久久久久久| 无码专区久久综合久中文字幕| 欧美粉嫩小泬久久久久久久| 国产一区二区三区久久精品| 亚洲精品乱码久久久久久蜜桃图片| 九九热久久免费视频| 久久精品人人做人人爽电影| 久久久亚洲欧洲日产国码二区 | A狠狠久久蜜臀婷色中文网| 久久久久亚洲AV无码观看 | 漂亮人妻被黑人久久精品| 噜噜噜色噜噜噜久久| 久久一区二区免费播放| 国产—久久香蕉国产线看观看| 久久美女人爽女人爽| 精品久久久久久中文字幕| 99久久国产热无码精品免费| 精品久久久久久无码中文字幕一区| 国内高清久久久久久| 亚洲色大成网站WWW久久九九| 亚洲成色WWW久久网站| 亚洲AV乱码久久精品蜜桃| 久久精品九九亚洲精品| 精品国产乱码久久久久久郑州公司| 久久久女人与动物群交毛片 | 亚洲精品无码久久久久去q | 国产成人精品综合久久久| 久久精品国产99国产精品|