• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    常用的圖象處理函數的整理

    發布: 2007-7-14 21:11 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 29次 | 進入軟件測試論壇討論

    領測軟件測試網 鄧振波

      在Visual C++中,對圖象操作的功能所能提供的函數是比較弱的,我在實踐中收集掌握了一些圖象出來的方法與技巧,總結出一個COperateBitmap類,可以實現方便的對圖象的讀取、保存、剪貼板操作、DIB和DDB的轉換,下面列出頭文件,工程文件我把它寫成了一個MFC擴展DLL?梢渣c擊 這里 下載。
      1、方便從磁盤裝載各種圖形格式(JPG、BMP、Gif等)文件,并得到圖象大小和相應位圖的句柄,從而可以方便的操作各種圖像格式, 無需了解各種圖象的格式,以及相應的壓縮解壓算法,得到的位圖句柄, 可以方便的在VC中進行各種操作。
      2、把位圖畫到DC上,方便的把位圖畫到設備DC上,無需復雜的SelectObject等
      3、通過位圖建立區域,可以生成各種形狀的窗口
      4、方便的兩個位圖復制操作,支持部分區域拷貝
      5、不用StretchBlt函數,直接改變位圖的大小,StretchBlt只改變顯示的大小,實際的數據并沒有發生變化,本類中的ScaleBitmap可以直接改變實際數據的大小,這將獲得一些有用的功能
      6、DDB與DIB的轉換
      7、保存位圖到文件,保存為JPEG文件

      這個類沒有作過多的優化與功能擴充,如果要寫專業的圖象操作程序,本類可能不適用。

    class COperateBitmap
    {
    public:
    BOOL CopyWindowToClipboard(CWnd* pWnd);
    //剪貼板操作
    BOOL CopyDIBToClipboard(const CWnd* pWnd,HANDLE hDib,CPalette* pPal);
    BOOL CopyBitmapToClipboard(const CWnd* pWnd,CBitmap& bitmap,CPalette* pPal);
    //建立調色版,根據DIB
    BOOL CreateDIBPalette(HANDLE hDIB, CPalette* pPal);
    //DDB和DIB的轉換
    HANDLE DDBToDIB(HBITMAP hBmp, DWORD dwCompression, CPalette *pPal);
    HBITMAP DIBToDDB( HANDLE hDIB );
    HANDLE DDBToDIB( CBitmap& bitmap, DWORD dwCompression, CPalette* pPal );
    int SaveBmp(HANDLE hDib,LPSTR filename);
    //從文件裝載各種圖形格式(JPG、BMP、Gif等),并得到大小和位圖的句柄
    void LoadPictureFromFile(HDC hdc, LPCTSTR szFile, CBitmap* pBitmap, CSize& mSize);
    //把位圖畫到DC上
    void DrawBitmap(CDC* dc, HBITMAP hbmp, RECT r, BOOL Stretch);
    //建立區域
    BOOL CreateRegion (RECT r, CRgn *pRgn, CBitmap *pBitmap, COLORREF keycol);
    //兩個位圖對拷
    void CopyBitmap(CDC* dc, CBitmap& mRes, const CBitmap& hbmp, RECT r);
    //由位圖到區域
    HRGN BitmapToRegion (HBITMAP hBmp, COLORREF cTransparentColor = 0, COLORREF cTolerance = 0x101010);
    COperateBitmap();
    //縮放圖象主函數,由Ivaylo Byalko編寫
    HBITMAP ScaleBitmap(HBITMAP hBmp, WORD wNewWidth, WORD wNewHeight);
    //保存DIB為JPEG文件
    BOOL JpegFromDib(HANDLE hDib, //Handle to DIB
    int nQuality, //JPEG quality (0-100)
    CString strJpegFileName, //Pathname to target jpeg file
    CString* strMsg); //Error msg to return
    virtual ~COperateBitmap();
    protected:
    //下面三個縮放圖象輔助函數,由Ivaylo Byalko編寫
    BITMAPINFO *PrepareRGBBitmapInfo(WORD wWidth, WORD wHeight);
    void ShrinkData(BYTE *pInBuff, WORD wWidth, WORD wHeight,
    BYTE *pOutBuff, WORD wNewWidth, WORD wNewHeight);
    void EnlargeData(BYTE *pInBuff, WORD wWidth, WORD wHeight,
    BYTE *pOutBuff, WORD wNewWidth, WORD wNewHeight);
    WORD DIBNumColors(LPSTR lpbi);
    WORD PaletteSize(LPSTR lpbi);
    float *CreateCoeff(int nLen, int nNewLen, BOOL bShrink);
    //操作JPEG文件
    BOOL BuildSamps(HANDLE hDib,
    int nSampsPerRow,
    struct jpeg_compress_struct cinfo,
    JSAMPARRAY jsmpArray,
    CString* pcsMsg);
    RGBQUAD QuadFromWord(WORD b16);
    BOOL DibToSamps(HANDLE hDib,
    int nSampsPerRow,
    struct jpeg_compress_struct cinfo,
    JSAMPARRAY jsmpPixels,
    CString* pcsMsg);
    };

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>