<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ```c++ #ifndef __MEM_DC__H__ #define __MEM_DC__H__ //防止重復編譯 #include "stdafx.h" class CMemDCZ : public CDC { CSize m_size; public: ~CMemDCZ() { DeleteDC(); } CMemDCZ() { m_size.cx = m_size.cy=0; } CMemDCZ(UINT nBitmap,CDC* pDC=NULL) { LoadBitmap(nBitmap,pDC); } CMemDCZ(LPCWSTR szFile,CDC* pDC=NULL) { LoadBitmap(szFile,pDC); } CMemDCZ(int cx,int cy,CDC* pDC=NULL) { Create(cx,cy,pDC); } BOOL DeleteDC() { if(!GetSafeHdc()) return FALSE; CBitmap* pBitmap = GetCurrentBitmap(); if(pBitmap) pBitmap ->DeleteObject(); return CDC::DeleteDC(); } int GetWidth(){return m_size.cx;} int GetHeight(){return m_size.cy;} BOOL Create(int cx,int cy,CDC* pDC=NULL) {//創建空白位圖 CBitmap bmp; if(!bmp.CreateCompatibleBitmap(pDC,cx,cy)) return FALSE; m_size.cx = cx; m_size.cy = cy; CreateCompatibleDC(pDC); SelectObject(&bmp); return TRUE; } BOOL LoadBitmap(UINT nBitmap,CDC* pDC=NULL) {//進程內位圖資源加載 CBitmap bmp; if(!bmp.LoadBitmap(nBitmap)) return FALSE; BITMAP bm; bmp.GetBitmap(&bm); m_size.cx = bm.bmWidth; m_size.cy = bm.bmHeight; CreateCompatibleDC(pDC); SelectObject(&bmp); return TRUE; } BOOL LoadBitmap(LPCWSTR szFile,CDC* pDC=NULL) {//進程外位圖圖片文件加載 HBITMAP hBitmap = (HBITMAP)LoadImage(NULL,szFile,IMAGE_BITMAP, 0,0,LR_LOADFROMFILE); if(!hBitmap) return FALSE; BITMAP bm; GetObject(hBitmap,sizeof(bm),&bm); m_size.cx = bm.bmWidth; m_size.cy = bm.bmHeight; CreateCompatibleDC(pDC); SelectObject(hBitmap); return TRUE; } void BitTrans( int nXDest, // 目標起點X int nYDest, // 目標起點Y int nWidthDest, // 目標寬度 int nHeightDest,// 目標高度 CDC* pDC, // 目標DC int nXSrc, // 來源起點X int nYSrc, // 來源起點Y COLORREF crTrans// 透明色 ) { CMemDCZ dcImage(nWidthDest, nHeightDest,pDC);//臨時DC CBitmap bmpMask; bmpMask.CreateBitmap(nWidthDest, nHeightDest, 1, 1, NULL); // 創建單色掩碼位圖 CDC dcMask;//掩碼DC dcMask.CreateCompatibleDC(pDC); dcMask.SelectObject(bmpMask); //將載入位圖的內存DC中的位圖,拷貝到臨時DC中 dcImage.BitBlt( 0, 0, nWidthDest, nHeightDest, this, nXSrc, nYSrc, SRCCOPY); // 設置臨時DC的透明色 dcImage.SetBkColor(crTrans); //掩碼DC的透明區域為白色其它區域為黑色 dcMask.BitBlt(0, 0, nWidthDest, nHeightDest, &dcImage, 0, 0, SRCCOPY); //臨時DC透明區域為黑色,其它區域保持不變 dcImage.SetBkColor(RGB(0,0,0)); dcImage.SetTextColor(RGB(255,255,255)); dcImage.BitBlt( 0, 0, nWidthDest, nHeightDest, &dcMask, 0, 0, SRCAND); // 目標DC透明部分保持屏幕不變,其它部分變成黑色 pDC ->SetBkColor(RGB(255,255,255)); pDC ->SetTextColor(RGB(0,0,0)); pDC ->BitBlt(nXDest, nYDest, nWidthDest, nHeightDest, &dcMask, 0, 0, SRCAND); pDC ->BitBlt(nXDest, nYDest, nWidthDest, nHeightDest, &dcImage, 0, 0, SRCPAINT); } void StretchTrans( int nXDest, // 目標起點X int nYDest, // 目標起點Y int nWidthDest, // 目標寬度 int nHeightDest, // 目標高度 CDC* pDC, // 目標DC int nXSrc, // 來源起點X int nYSrc, // 來源起點Y int nWidthSrc, // 來源寬度 int nHeightSrc, // 來源高度 COLORREF crTrans // 透明色 ) { CMemDCZ dcImage(nWidthDest, nHeightDest,pDC);//臨時DC CBitmap bmpMask; // 創建單色掩碼位圖 bmpMask.CreateBitmap(nWidthDest, nHeightDest, 1, 1, NULL); CDC dcMask; dcMask.CreateCompatibleDC(pDC); dcMask.SelectObject(bmpMask); // 將載入位圖的內存DC中的位圖,拷貝到臨時DC中 if (nWidthDest == nWidthSrc && nHeightDest == nHeightSrc) dcImage.BitBlt(0, 0, nWidthDest, nHeightDest, this, nXSrc, nYSrc, SRCCOPY); else dcImage.StretchBlt(0, 0, nWidthDest, nHeightDest, this, nXSrc, nYSrc, nWidthSrc, nHeightSrc, SRCCOPY); // 設置臨時DC的透明色 dcImage.SetBkColor( crTrans); //掩碼DC的透明區域為白色其它區域為黑色 dcMask.BitBlt(0,0,nWidthDest, nHeightDest,&dcImage,0,0,SRCCOPY); //臨時DC透明區域為黑色,其它區域保持不變 dcImage.SetBkColor(RGB(0,0,0)); dcImage.SetTextColor(RGB(255,255,255)); dcImage.BitBlt(0, 0, nWidthDest, nHeightDest, &dcMask, 0, 0, SRCAND); // 目標DC透明部分保持屏幕不變,其它部分變成黑色 pDC ->SetBkColor(RGB(255,255,255)); pDC ->SetTextColor(RGB(0,0,0)); pDC ->BitBlt(nXDest, nYDest, nWidthDest, nHeightDest, &dcMask, 0, 0, SRCAND); pDC ->BitBlt(nXDest, nYDest, nWidthDest, nHeightDest, &dcImage, 0, 0, SRCPAINT); } }; #endif ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看