• <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>
            posts - 34,comments - 2,trackbacks - 0
            一、位圖

            1、三大函數
            從源寫到目標  
            BOOL BitBlt(HDC hdcDest,int nXDest,int nYDest,int nWidth,int nHeight,HDC hdcSrc,int nXSrc,int nYSrc,DWORD dwRop);

            從源寫到目標 ,可以拉伸
            BOOL StretchBlt(HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeighDest, HDC hdcSrc, int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc, DWORD dwRop);

            選定刷子。
            函數原型:BOOL PatBlt(HDC hdc, int nXLeft, int nYLeft, int nWidth, int nHeight, DWORD dwRop);

            2、加載位圖資源:
            (1)、加載  hBitmap=LoadBitmap(hinst,MAKEINTRESOURCE(IDB_BITMAP2));
            (2)、得到對象  GetObject(hBitmap,sizeof(BITMAP),&bitmap);
            (3)創建內存DC     hdcMem=CreateCompatibleDC(hdc);   //創建內存dc
            (4)把位圖對象選中到內存dc上     SelectObject(hdcMem,hBitmap); 
            (5)用 BitBlt、StretchBlt、PatBlt畫圖:
            注意要刪除DC,和對象
            DeleteDC(hdcMem);
            DeleteObject(hBitmap);

            3、填充bitmap創建單色小位圖。
            先用數據填充bitmap。然后調用CreateBitmap(&bitmap);


            4、用位圖做畫刷   HBRUSH CreatePatternBrush(HBITMAP hbmp); 
            該函數可以創建具有指定位圖模式的邏輯刷子,該位圖不能是DIB類型的位圖,DIB位圖是由CreateDIBSection函數創建的。


            二、透明位圖/透明窗口

            //改變擴展風格
            DWORD dwStyle=GetWindowLong(hwnd,GWL_EXSTYLE);
            SetWindowLong(hwnd,GWL_EXSTYLE,dwStyle^0x80000);
            //動態鏈接庫
            hinst=LoadLibrary("User32.DLL");
            if(hinst)
            {
            typedef BOOL (WINAPI *MYFUNC)(HWND ,COLORREF,BYTE,DWORD);
            MYFUNC fun=NULL;
            //獲得指針
            fun=(MYFUNC)GetProcAddress(hinst,"SetLayeredWindowAttributes");
            if (fun)
            {
             fun(hwnd,0,180,2);    //設置
            }
            }

            //擴展風格WS_EX_LAYERED

             


            三、元文件

            一、創建:
            CreateMetaFile(); NULL表示存儲在內存中
            CloseMetaFile    //返回元文件句柄
            PlayMetaFile     //在指定的設備場景中回放一個圖元文件。與原元文件的坐標有關,故要定義原點在哪里。。。
            DeleteMetaFile   //刪除
            hmf=GetMetaFile(szFileName);    //獲得句柄
            CopyMetaFile   //為元文件制定一個副本
            EnumMetaFile  //為一個標準的windows圖元文件枚舉單獨的圖元文件記錄
            PlayMetaFileRecord    //回放來自圖元文件的單條記錄(每條記錄都包含了單個GDI繪圖命令)
            //EnumMetaFileProc 
            int CALLBACK EnumMetaFileProc(
              HDC hDC,                    // handle to device context
              HANDLETABLE FAR *lpHTable,  // pointer to metafile handle table
              METARECORD FAR *lpMFR,      // pointer to metafile record
              int nObj,                   // count of objects
              LPARAM lpClientData         // pointer to optional data
            );

            GetMetaFileBitsEx 

            SetMetaFileBitsEx

            //增強型元文件
            CreateEnhMetaFile //創建增強型元文件
            CloseEnhMetaFile  //返回元文件句柄。
            PlayEnhMetaFile   //顯示元文件
            GetEnhMetaFileHeader(hemf,cbsize,&emh);    //獲得ENHMETAHEADER信息。
            GetEnhMetaFile    //取得磁盤文件中包含的一個增強型圖元文件的圖元文件句柄
            EnumEnhMetaFile
            PlayEnhMetaFileRecord     // 回放單獨一條增強型圖元文件記錄
            //
            CopyEnhMetaFile  
            DeleteEnhMetaFile 
            EnhMetaFileProc 
             
            GdiComment 
            GetEnhMetaFileBits 
            GetEnhMetaFileDescription 
            GetEnhMetaFilePaletteEntries 
            GetWinMetaFileBits  
             
            SetEnhMetaFileBits 
            SetWinMetaFileBits

              記錄數據的元文件:
            ENHMETAHEADER
            typedef struct tagENHMETAHEADER { // enmh
                DWORD iType;    //類型
                DWORD nSize;  //大小
                RECTL rclBounds;     //指出圖像大小
                RECTL rclFrame;   //
                DWORD dSignature;  //字符串“EMF”
                DWORD nVersion;  //0X00010000
                DWORD nBytes;  //總字節數
                DWORD nRecords;  //指出記錄數。(頭記錄,GDI函數調用等記錄)
                WORD  nHandles;  //指出元文件使用圖形對象的非默認句柄數量。
                WORD  sReserved;
                DWORD nDescription;  //描述串的大小 
                DWORD offDescription;  //描述串在文件中的偏移量
                DWORD nPalEntries;   //調試板中條目的個數
                SIZEL szlDevice;   //指出以像素為單位的輸出設備大小
                SIZEL szlMillimeters; //以mm為單位輸出的設備大小
                DWORD cbPixelFormat; //描述串
                DWORD offPixelFormat;
                DWORD bOpenGL;
            } ENHMETAHEADER;



            四、字體

            一、用于文本輸出的函數:
            1、TextOut (hdc, xStart, yStart, pString, iCount) ;
            2、TabbedTextOut ( hdc, xStart, yStart, pString, iCount,iNumTabs, piTabStops, xTabOrigin) ;iNumTabs制表位數,piTabStops以像素為單位的制表位數。xTabOrigin平均字符寬度設置。
            3、BOOL ExtTextOut(HDC hdc, int X, int Y, UINT fuOptions, CONST RECT *lprc, LPCTSTR lpString, UINT cbCount, CONST INT *lpDx);lpDx指定字符串中連續字符的間隔、NULL為默認。
            4、int DrawText(HDC hDC, LPCTSTR lpString,int nCount, LPRECT lpRect, UINT uFormat );
            5、int DrawTextEx(HDC, hdc, LPTSTR lpchText, int cchText, LPRECT lprc, UINT dwDTFormat, LPDRAWTEXTPARAMS lpDTParams);

            二、邏輯字體
            1、CreateFont 或CreateFontIndirect建立邏輯字體
            2、GetTextFace (hdc, sizeof (szFaceName) / sizeof (TCHAR), szFaceName) ;獲得字體名
            3、GetTextMetrics (hdc, &textmetric) ;獲得字體信息

            三、
            該函數為指定的設備環境設置圖形模式。int SetGraphicsMode(HDC hdc, int iMode);
            該函數用指定的方式修改與設備環境有關的全局轉換。BOOL ModifyWorldTransform(HDc hdc, CONST XFORM *lpXform, DWORD iMode);

            四、hPen = ExtCreatePen (iStyle, iWidth, &lBrush, 0, NULL) ;使用該函數正常地繪制線段。

            五:軌跡
            BeginPath         {路徑開始}
            EndPath           {路徑結束}
            StrokePath        {繪制路徑}
            FillPath          {填充路徑}
            StrokeAndFillPath {繪制并填充路徑}
            SelectClipPath     路徑的運算
            //在路徑中可以使用的圖形命令有:
            AngleArc
            Arc
            ArcTo
            Chord
            CloseFigure
            Ellipse
            ExtTextOut
            LineTo
            MoveToEx
            Pie
            PolyBezier
            PolyBezierTo
            PolyDraw
            Polygon
            Polyline
            PolylineTo
            PolyPolygon
            PolyPolyline
            Rectangle
            RoundRect
            TextOut


            六、字體效果

            一、設置字體大小
            LOGFONT lf;
            ZeroMemory(&lf,sizeof(lf));
            lf.lfCharSet=DEFAULT_CHARSET;
            lf.lfHeight=m_iMineLength;
            lf.lfWidth=m_iMineLength;
            lf.lfWeight=1000;
            HFONT hFont=CreateFontIndirect(&lf);
            HFONT hOldFont=(HFONT)SelectObject(m_hMemDC,hFont);
            DeleteObject(hFont);

            二、輸出透明底色字體
            SetBkMode(hMemDc,TRANSPARENT);
            TextOut(hMemDc,0,0,sNum,strlen(sNum));


            三、居中輸出
            DrawText(hdc,str,&rt,DT_CENTER|DT_VCENTER|DT_SINGLELINE);
            //注意要同時DT_VCENTER|DT_SINGLELINE才能居中

             

            posted on 2011-09-13 16:16 Yu_ 閱讀(699) 評論(0)  編輯 收藏 引用 所屬分類: Windows程序設計
            久久se精品一区二区影院| 国产69精品久久久久APP下载 | 国产精品久久久久久久久鸭| 久久精品中文字幕无码绿巨人| 久久伊人色| 久久久久免费看成人影片| 成人久久精品一区二区三区 | 无码AV中文字幕久久专区| 波多野结衣久久一区二区| 日韩av无码久久精品免费| 精品国产婷婷久久久| 久久综合给合久久国产免费| 久久久WWW成人免费精品| 欧美大香线蕉线伊人久久| 狠狠久久综合| 国产一级做a爰片久久毛片| 香蕉久久一区二区不卡无毒影院 | 国产午夜精品久久久久免费视 | 久久久久久久久久久久久久| 国产成人久久精品激情| 日本欧美国产精品第一页久久| 久久精品午夜一区二区福利| 天天久久狠狠色综合| 国内精品久久久久久99蜜桃| 色8激情欧美成人久久综合电| 四虎国产永久免费久久| 熟妇人妻久久中文字幕| 久久成人精品| 日本精品久久久久中文字幕8| 国产亚洲精久久久久久无码| 午夜视频久久久久一区| 国产精品gz久久久| 91精品国产91久久久久久蜜臀| 久久被窝电影亚洲爽爽爽| 久久婷婷五月综合成人D啪 | 久久99精品国产一区二区三区| 欧美日韩精品久久久免费观看| 人妻系列无码专区久久五月天| 国产综合免费精品久久久| 国产精品免费久久| 国产精品欧美亚洲韩国日本久久|