<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 功能強大 支持多語言、二開方便! 廣告
                有的時候,我們可能會需要將對話框的整個客戶區存儲為圖片的格式,下面介紹了一種將客戶區保存為BMP圖片的方法。主要步驟如下: ⑴?獲取當前客戶區 ⑵?設置位圖格式及內容 ⑶?存儲數據為BMP圖片 下面結合實例來說明(**完整實例請到我的CSDN資源中下載:[http://download.csdn.net/detail/margin1988/3677115](http://download.csdn.net/detail/margin1988/3677115)**): ~~~ #include "WINDOWSX.H " //獲取客戶區及設置位圖格式、內容 CClientDC SHDC(this); CDC memDC; CRect rect; GetClientRect(rect); memDC.CreateCompatibleDC(&SHDC); CBitmap bm; int Width = rect.Width(); int Height = rect.Height(); bm.CreateCompatibleBitmap(&SHDC,Width,Height); CBitmap* pOld = memDC.SelectObject(&bm); memDC.BitBlt(0,0,Width,Height,&SHDC,0,0,SRCCOPY); memDC.SelectObject(pOld); BITMAP btm; bm.GetBitmap(&btm); DWORD size = btm.bmWidthBytes*btm.bmHeight; LPSTR lpData =(LPSTR)GlobalAllocPtr(GPTR,size); BITMAPFILEHEADER bfh; bfh.bfReserved1 = bfh.bfReserved2 = 0; bfh.bfType = ((WORD)( 'M'<<8)|'B'); bfh.bfSize = 54 + size; bfh.bfOffBits = 54; BITMAPINFOHEADER bih; bih.biBitCount = btm.bmBitsPixel; bih.biClrImportant = 0; bih.biClrUsed = 0; bih.biCompression = 0; bih.biHeight = btm.bmHeight; bih.biPlanes = 1; bih.biSize = sizeof(BITMAPINFOHEADER); bih.biSizeImage = size; bih.biWidth = btm.bmWidth; bih.biXPelsPerMeter = 0; bih.biYPelsPerMeter = 0; GetDIBits(GetDC()->GetSafeHdc(),bm,0,bih.biHeight,lpData,(BITMAPINFO*)&bih,DIB_RGB_COLORS); //CFileDialog彈出保存文件窗口及保存文件 CFileDialog dlg(FALSE,_T(""),_T(""),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("*.bmp|*.bmp")); CString str; str.Format("%sBMP\\",g_BasePath); dlg.m_ofn.lpstrInitialDir=_T(str); if(dlg.DoModal()==IDOK) { CFile bf; CString ss=dlg.GetPathName(); if(bf.Open(ss,CFile::modeCreate|CFile::modeWrite)) { bf.Write(&bfh,sizeof(BITMAPFILEHEADER)); bf.Write(&bih,sizeof(BITMAPINFOHEADER)); bf.Write(lpData,size); bf.Close(); } GlobalFreePtr(lpData); } ~~~ ※值得注意的是,這段程序中有另外一個小知識點,那就是“另存為”文件對話框: CFileDialog ?dlg(**FALSE**,_T(""),_T(""),OFN_HIDEREADONLY| OFN_OVERWRITEPROMPT,_T("*.bmp|*.bmp")); ![](https://box.kancloud.cn/2016-08-31_57c6b4a39f6a6.gif) 效果圖
                  <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>

                              哎呀哎呀视频在线观看