南望山谭文文 2017-07-27 09:52 采纳率: 0%
浏览 816

mfc作图问题求解,新手

CClientDC画出图形,如何计算图形面积?dc都包含那些函数?

  • 写回答

1条回答 默认 最新

  • shen_wei 2017-07-28 04:18
    关注
     class CDC : public CObject
    {
        DECLARE_DYNCREATE(CDC)
    public:
    
    // Attributes
        HDC m_hDC;          // The output DC (must be first data member)
        HDC m_hAttribDC;    // The Attribute DC
        operator HDC() const;
        HDC GetSafeHdc() const; // Always returns the Output DC
        CWnd* GetWindow() const;
    
        static CDC* PASCAL FromHandle(HDC hDC);
        static void PASCAL DeleteTempMap();
        BOOL Attach(HDC hDC);   // Attach/Detach affects only the Output DC
        HDC Detach();
    
        virtual void SetAttribDC(HDC hDC);  // Set the Attribute DC
        virtual void SetOutputDC(HDC hDC);  // Set the Output DC
        virtual void ReleaseAttribDC();     // Release the Attribute DC
        virtual void ReleaseOutputDC();     // Release the Output DC
    
        BOOL IsPrinting() const;            // TRUE if being used for printing
    
        CPen* GetCurrentPen() const;
        CBrush* GetCurrentBrush() const;
        CPalette* GetCurrentPalette() const;
        CFont* GetCurrentFont() const;
        CBitmap* GetCurrentBitmap() const;
    
        // for bidi and mirrored localization
        DWORD GetLayout() const;
        DWORD SetLayout(DWORD dwLayout);
    
    // Constructors
        CDC();
        BOOL CreateDC(LPCTSTR lpszDriverName, LPCTSTR lpszDeviceName,
            LPCTSTR lpszOutput, const void* lpInitData);
        BOOL CreateIC(LPCTSTR lpszDriverName, LPCTSTR lpszDeviceName,
            LPCTSTR lpszOutput, const void* lpInitData);
        BOOL CreateCompatibleDC(CDC* pDC);
    
        BOOL DeleteDC();
    
    // Device-Context Functions
        virtual int SaveDC();
        virtual BOOL RestoreDC(int nSavedDC);
        int GetDeviceCaps(int nIndex) const;
        UINT SetBoundsRect(LPCRECT lpRectBounds, UINT flags);
        UINT GetBoundsRect(LPRECT lpRectBounds, UINT flags);
        BOOL ResetDC(const DEVMODE* lpDevMode);
    
    // Drawing-Tool Functions
        CPoint GetBrushOrg() const;
        CPoint SetBrushOrg(int x, int y);
        CPoint SetBrushOrg(POINT point);
        int EnumObjects(int nObjectType,
                int (CALLBACK* lpfn)(LPVOID, LPARAM), LPARAM lpData);
    
    // Type-safe selection helpers
    public:
        virtual CGdiObject* SelectStockObject(int nIndex);
        CPen* SelectObject(CPen* pPen);
        CBrush* SelectObject(CBrush* pBrush);
        virtual CFont* SelectObject(CFont* pFont);
        CBitmap* SelectObject(CBitmap* pBitmap);
        int SelectObject(CRgn* pRgn);       // special return for regions
        CGdiObject* SelectObject(CGdiObject* pObject);
            // CGdiObject* provided so compiler doesn't use SelectObject(HGDIOBJ)
    
    // Color and Color Palette Functions
        COLORREF GetNearestColor(COLORREF crColor) const;
        CPalette* SelectPalette(CPalette* pPalette, BOOL bForceBackground);
        UINT RealizePalette();
        void UpdateColors();
    
    // Drawing-Attribute Functions
        COLORREF GetBkColor() const;
        int GetBkMode() const;
        int GetPolyFillMode() const;
        int GetROP2() const;
        int GetStretchBltMode() const;
        COLORREF GetTextColor() const;
    
        virtual COLORREF SetBkColor(COLORREF crColor);
        int SetBkMode(int nBkMode);
        int SetPolyFillMode(int nPolyFillMode);
        int SetROP2(int nDrawMode);
        int SetStretchBltMode(int nStretchMode);
        virtual COLORREF SetTextColor(COLORREF crColor);
    
        BOOL GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const;
        BOOL SetColorAdjustment(const COLORADJUSTMENT* lpColorAdjust);
    
    #if (_WIN32_WINNT >= 0x0500)
    
        COLORREF GetDCBrushColor() const;
        COLORREF SetDCBrushColor(COLORREF crColor);
    
        COLORREF GetDCPenColor() const;
        COLORREF SetDCPenColor(COLORREF crColor);
    
    #endif
    
        // Graphics mode
        int SetGraphicsMode(int iMode);
        int GetGraphicsMode() const;
    
        // World transform
        BOOL SetWorldTransform(const XFORM* pXform);
        BOOL ModifyWorldTransform(const XFORM* pXform,DWORD iMode);
        BOOL GetWorldTransform(XFORM* pXform) const;
    
        // Mapping Functions
        int GetMapMode() const;
        CPoint GetViewportOrg() const;
        virtual int SetMapMode(int nMapMode);
        // Viewport Origin
        virtual CPoint SetViewportOrg(int x, int y);
                CPoint SetViewportOrg(POINT point);
        virtual CPoint OffsetViewportOrg(int nWidth, int nHeight);
    
        // Viewport Extent
        CSize GetViewportExt() const;
        virtual CSize SetViewportExt(int cx, int cy);
                CSize SetViewportExt(SIZE size);
        virtual CSize ScaleViewportExt(int xNum, int xDenom, int yNum, int yDenom);
    
        // Window Origin
        CPoint GetWindowOrg() const;
        CPoint SetWindowOrg(int x, int y);
        CPoint SetWindowOrg(POINT point);
        CPoint OffsetWindowOrg(int nWidth, int nHeight);
    
        // Window extent
        CSize GetWindowExt() const;
        virtual CSize SetWindowExt(int cx, int cy);
                CSize SetWindowExt(SIZE size);
        virtual CSize ScaleWindowExt(int xNum, int xDenom, int yNum, int yDenom);
    
    // Coordinate Functions
        void DPtoLP(LPPOINT lpPoints, int nCount = 1) const;
        void DPtoLP(LPRECT lpRect) const;
        void DPtoLP(LPSIZE lpSize) const;
        void LPtoDP(LPPOINT lpPoints, int nCount = 1) const;
        void LPtoDP(LPRECT lpRect) const;
        void LPtoDP(LPSIZE lpSize) const;
    
    // Special Coordinate Functions (useful for dealing with metafiles and OLE)
        void DPtoHIMETRIC(LPSIZE lpSize) const;
        void LPtoHIMETRIC(LPSIZE lpSize) const;
        void HIMETRICtoDP(LPSIZE lpSize) const;
        void HIMETRICtoLP(LPSIZE lpSize) const;
    
    // Region Functions
        BOOL FillRgn(CRgn* pRgn, CBrush* pBrush);
        BOOL FrameRgn(CRgn* pRgn, CBrush* pBrush, int nWidth, int nHeight);
        BOOL InvertRgn(CRgn* pRgn);
        BOOL PaintRgn(CRgn* pRgn);
    
    // Clipping Functions
        virtual int GetClipBox(LPRECT lpRect) const;
        virtual BOOL PtVisible(int x, int y) const;
                BOOL PtVisible(POINT point) const;
        virtual BOOL RectVisible(LPCRECT lpRect) const;
                int SelectClipRgn(CRgn* pRgn);
                int ExcludeClipRect(int x1, int y1, int x2, int y2);
                int ExcludeClipRect(LPCRECT lpRect);
                int ExcludeUpdateRgn(CWnd* pWnd);
                int IntersectClipRect(int x1, int y1, int x2, int y2);
                int IntersectClipRect(LPCRECT lpRect);
                int OffsetClipRgn(int x, int y);
                int OffsetClipRgn(SIZE size);
        int SelectClipRgn(CRgn* pRgn, int nMode);
    
    // Line-Output Functions
        CPoint GetCurrentPosition() const;
        CPoint MoveTo(int x, int y);
        CPoint MoveTo(POINT point);
        BOOL LineTo(int x, int y);
        BOOL LineTo(POINT point);
        BOOL Arc(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
        BOOL Arc(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
        BOOL Polyline(const POINT* lpPoints, int nCount);
    
        BOOL AngleArc(int x, int y, int nRadius, float fStartAngle, float fSweepAngle);
        BOOL ArcTo(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
        BOOL ArcTo(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
        int GetArcDirection() const;
        int SetArcDirection(int nArcDirection);
    
        BOOL PolyDraw(const POINT* lpPoints, const BYTE* lpTypes, int nCount);
        BOOL PolylineTo(const POINT* lpPoints, int nCount);
        BOOL PolyPolyline(const POINT* lpPoints,
            const DWORD* lpPolyPoints, int nCount);
    
        BOOL PolyBezier(const POINT* lpPoints, int nCount);
        BOOL PolyBezierTo(const POINT* lpPoints, int nCount);
    
    // Simple Drawing Functions
        void FillRect(LPCRECT lpRect, CBrush* pBrush);
        void FrameRect(LPCRECT lpRect, CBrush* pBrush);
        void InvertRect(LPCRECT lpRect);
        BOOL DrawIcon(int x, int y, HICON hIcon);
        BOOL DrawIcon(POINT point, HICON hIcon);
        BOOL DrawState(CPoint pt, CSize size, HBITMAP hBitmap, UINT nFlags,
            HBRUSH hBrush = NULL);
        BOOL DrawState(CPoint pt, CSize size, CBitmap* pBitmap, UINT nFlags,
            CBrush* pBrush = NULL);
        BOOL DrawState(CPoint pt, CSize size, HICON hIcon, UINT nFlags,
            HBRUSH hBrush = NULL);
        BOOL DrawState(CPoint pt, CSize size, HICON hIcon, UINT nFlags,
            CBrush* pBrush = NULL);
        BOOL DrawState(CPoint pt, CSize size, LPCTSTR lpszText, UINT nFlags,
            BOOL bPrefixText = TRUE, int nTextLen = 0, HBRUSH hBrush = NULL);
        BOOL DrawState(CPoint pt, CSize size, LPCTSTR lpszText, UINT nFlags,
            BOOL bPrefixText = TRUE, int nTextLen = 0, CBrush* pBrush = NULL);
        BOOL DrawState(CPoint pt, CSize size, DRAWSTATEPROC lpDrawProc,
            LPARAM lData, UINT nFlags, HBRUSH hBrush = NULL);
        BOOL DrawState(CPoint pt, CSize size, DRAWSTATEPROC lpDrawProc,
            LPARAM lData, UINT nFlags, CBrush* pBrush = NULL);
    
    // Ellipse and Polygon Functions
        BOOL Chord(int x1, int y1, int x2, int y2, int x3, int y3,
            int x4, int y4);
        BOOL Chord(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
        void DrawFocusRect(LPCRECT lpRect);
        BOOL Ellipse(int x1, int y1, int x2, int y2);
        BOOL Ellipse(LPCRECT lpRect);
        BOOL Pie(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
        BOOL Pie(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
        BOOL Polygon(const POINT* lpPoints, int nCount);    
        BOOL PolyPolygon(const POINT* lpPoints, const INT* lpPolyCounts, int nCount);
        BOOL Rectangle(int x1, int y1, int x2, int y2);
        BOOL Rectangle(LPCRECT lpRect);
        BOOL RoundRect(int x1, int y1, int x2, int y2, int x3, int y3);
        BOOL RoundRect(LPCRECT lpRect, POINT point);
    
    // Bitmap Functions
        BOOL PatBlt(int x, int y, int nWidth, int nHeight, DWORD dwRop);
        BOOL BitBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
            int xSrc, int ySrc, DWORD dwRop);
        BOOL StretchBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
            int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop);
        COLORREF GetPixel(int x, int y) const;
        COLORREF GetPixel(POINT point) const;
        COLORREF SetPixel(int x, int y, COLORREF crColor);
        COLORREF SetPixel(POINT point, COLORREF crColor);
        BOOL FloodFill(int x, int y, COLORREF crColor);
        BOOL ExtFloodFill(int x, int y, COLORREF crColor, UINT nFillType);
        BOOL MaskBlt(int x, int y, int nWidth, int nHeight, CDC* pSrcDC,
            int xSrc, int ySrc, CBitmap& maskBitmap, int xMask, int yMask,
            DWORD dwRop);
        BOOL PlgBlt(LPPOINT lpPoint, CDC* pSrcDC, int xSrc, int ySrc,
            int nWidth, int nHeight, CBitmap& maskBitmap, int xMask, int yMask);
        BOOL SetPixelV(int x, int y, COLORREF crColor);
        BOOL SetPixelV(POINT point, COLORREF crColor);
       BOOL GradientFill(TRIVERTEX* pVertices, ULONG nVertices, 
          void* pMesh, ULONG nMeshElements, DWORD dwMode);
       BOOL TransparentBlt(int xDest, int yDest, int nDestWidth, int nDestHeight,
          CDC* pSrcDC, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, 
          UINT clrTransparent);
       BOOL AlphaBlend(int xDest, int yDest, int nDestWidth, int nDestHeight,
          CDC* pSrcDC, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, 
          BLENDFUNCTION blend);
    
    // Text Functions
        virtual BOOL TextOut(int x, int y, LPCTSTR lpszString, int nCount);
                BOOL TextOut(int x, int y, const CString& str);
        virtual BOOL ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
                    LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths);
                BOOL ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect,
                    const CString& str, LPINT lpDxWidths);
        virtual CSize TabbedTextOut(int x, int y, LPCTSTR lpszString, int nCount,
                    int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);
                CSize TabbedTextOut(int x, int y, const CString& str,
                    int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);
    
    #pragma push_macro("DrawText")
    #pragma push_macro("DrawTextEx")
    #undef DrawText
    #undef DrawTextEx
        virtual int _AFX_FUNCNAME(DrawText)(LPCTSTR lpszString, int nCount, LPRECT lpRect,
                    UINT nFormat);
                int _AFX_FUNCNAME(DrawText)(const CString& str, LPRECT lpRect, UINT nFormat);
    
        virtual int _AFX_FUNCNAME(DrawTextEx)(LPTSTR lpszString, int nCount, LPRECT lpRect,
                    UINT nFormat, LPDRAWTEXTPARAMS lpDTParams);
                int _AFX_FUNCNAME(DrawTextEx)(const CString& str, LPRECT lpRect, UINT nFormat, LPDRAWTEXTPARAMS lpDTParams);
    
                int DrawText(LPCTSTR lpszString, int nCount, LPRECT lpRect,
                    UINT nFormat);
                int DrawText(const CString& str, LPRECT lpRect, UINT nFormat);
    
                int DrawTextEx(LPTSTR lpszString, int nCount, LPRECT lpRect,
                    UINT nFormat, LPDRAWTEXTPARAMS lpDTParams);
                int DrawTextEx(const CString& str, LPRECT lpRect, UINT nFormat, LPDRAWTEXTPARAMS lpDTParams);
    #pragma pop_macro("DrawText")
    #pragma pop_macro("DrawTextEx")
    
        CSize GetTextExtent(LPCTSTR lpszString, int nCount) const;
        CSize GetTextExtent(const CString& str) const;
        CSize GetOutputTextExtent(LPCTSTR lpszString, int nCount) const;
        CSize GetOutputTextExtent(const CString& str) const;
        CSize GetTabbedTextExtent(LPCTSTR lpszString, int nCount,
            int nTabPositions, LPINT lpnTabStopPositions) const;
        CSize GetTabbedTextExtent(const CString& str,
            int nTabPositions, LPINT lpnTabStopPositions) const;
        CSize GetOutputTabbedTextExtent(LPCTSTR lpszString, int nCount,
            int nTabPositions, LPINT lpnTabStopPositions) const;
        CSize GetOutputTabbedTextExtent(const CString& str,
            int nTabPositions, LPINT lpnTabStopPositions) const;
        virtual BOOL GrayString(CBrush* pBrush,
            BOOL (CALLBACK* lpfnOutput)(HDC, LPARAM, int), LPARAM lpData,
                int nCount, int x, int y, int nWidth, int nHeight);
        UINT GetTextAlign() const;
        UINT SetTextAlign(UINT nFlags);
        int GetTextFace(_In_ int nCount, _Out_z_cap_post_count_(nCount, return) LPTSTR lpszFacename) const;
        int GetTextFace(CString& rString) const;
    #pragma push_macro("GetTextMetrics")
    #undef GetTextMetrics
        BOOL _AFX_FUNCNAME(GetTextMetrics)(LPTEXTMETRIC lpMetrics) const;
        BOOL GetTextMetrics(LPTEXTMETRIC lpMetrics) const;
    #pragma pop_macro("GetTextMetrics")
        BOOL GetOutputTextMetrics(LPTEXTMETRIC lpMetrics) const;
        int SetTextJustification(int nBreakExtra, int nBreakCount);
        int GetTextCharacterExtra() const;
        int SetTextCharacterExtra(int nCharExtra);
    
        DWORD GetCharacterPlacement(LPCTSTR lpString, int nCount, int nMaxExtent, LPGCP_RESULTS lpResults, DWORD dwFlags) const;
        DWORD GetCharacterPlacement(CString& str, int nMaxExtent, LPGCP_RESULTS lpResults, DWORD dwFlags) const;
    
    #if (_WIN32_WINNT >= 0x0500)
    
        BOOL GetTextExtentExPointI(LPWORD pgiIn, int cgi, int nMaxExtent, LPINT lpnFit, LPINT alpDx, _Out_opt_ LPSIZE lpSize) const;
        BOOL GetTextExtentPointI(LPWORD pgiIn, int cgi, _Out_opt_ LPSIZE lpSize) const;
    
    #endif
    
    
    
    // Advanced Drawing
        BOOL DrawEdge(LPRECT lpRect, UINT nEdge, UINT nFlags);
        BOOL DrawFrameControl(LPRECT lpRect, UINT nType, UINT nState);
    
    // Scrolling Functions
        BOOL ScrollDC(int dx, int dy, LPCRECT lpRectScroll, LPCRECT lpRectClip,
            CRgn* pRgnUpdate, LPRECT lpRectUpdate);
    
    // Font Functions
        BOOL GetCharWidth(UINT nFirstChar, UINT nLastChar, LPINT lpBuffer) const;
        BOOL GetOutputCharWidth(UINT nFirstChar, UINT nLastChar, LPINT lpBuffer) const;
        DWORD SetMapperFlags(DWORD dwFlag);
        CSize GetAspectRatioFilter() const;
    
        BOOL GetCharABCWidths(UINT nFirstChar, UINT nLastChar, LPABC lpabc) const;
        DWORD GetFontData(DWORD dwTable, DWORD dwOffset, LPVOID lpData, DWORD cbData) const;
        int GetKerningPairs(int nPairs, LPKERNINGPAIR lpkrnpair) const;
        UINT GetOutlineTextMetrics(UINT cbData, LPOUTLINETEXTMETRIC lpotm) const;
        DWORD GetGlyphOutline(UINT nChar, UINT nFormat, LPGLYPHMETRICS lpgm,
            DWORD cbBuffer, LPVOID lpBuffer, const MAT2* lpmat2) const;
    
        BOOL GetCharABCWidths(UINT nFirstChar, UINT nLastChar,
            LPABCFLOAT lpABCF) const;
        BOOL GetCharWidth(UINT nFirstChar, UINT nLastChar,
            float* lpFloatBuffer) const;
    
        DWORD GetFontLanguageInfo() const;
    
    #if (_WIN32_WINNT >= 0x0500)
    
        BOOL GetCharABCWidthsI(UINT giFirst, UINT cgi, LPWORD pgi, LPABC lpabc) const;
        BOOL GetCharWidthI(UINT giFirst, UINT cgi, LPWORD pgi, LPINT lpBuffer) const;
    
    #endif
    
    // Printer/Device Escape Functions
        virtual int Escape(_In_ int nEscape, _In_ int nCount,
            _In_bytecount_(nCount) LPCSTR lpszInData, _In_ LPVOID lpOutData);
        int Escape(_In_ int nEscape, _In_ int nInputSize, _In_bytecount_(nInputSize) LPCSTR lpszInputData,
            _In_ int nOutputSize, _Out_bytecap_(nOutputSize) LPSTR lpszOutputData);
        int DrawEscape(int nEscape, int nInputSize, LPCSTR lpszInputData);
    
        // Escape helpers
        int StartDoc(LPCTSTR lpszDocName);  // old Win3.0 version
        int StartDoc(LPDOCINFO lpDocInfo);
        int StartPage();
        int EndPage();
        int SetAbortProc(BOOL (CALLBACK* lpfn)(HDC, int));
        int AbortDoc();
        int EndDoc();
    
    // MetaFile Functions
        BOOL PlayMetaFile(HMETAFILE hMF);
        BOOL PlayMetaFile(HENHMETAFILE hEnhMetaFile, LPCRECT lpBounds);
        BOOL AddMetaFileComment(UINT nDataSize, const BYTE* pCommentData);
            // can be used for enhanced metafiles only
    
    // Path Functions
        BOOL AbortPath();
        BOOL BeginPath();
        BOOL CloseFigure();
        BOOL EndPath();
        BOOL FillPath();
        BOOL FlattenPath();
        BOOL StrokeAndFillPath();
        BOOL StrokePath();
        BOOL WidenPath();
        float GetMiterLimit() const;
        BOOL SetMiterLimit(float fMiterLimit);
        int GetPath(LPPOINT lpPoints, LPBYTE lpTypes, int nCount) const;
        BOOL SelectClipPath(int nMode);
    
    // Misc Helper Functions
        static CBrush* PASCAL GetHalftoneBrush();
        void DrawDragRect(LPCRECT lpRect, SIZE size,
            LPCRECT lpRectLast, SIZE sizeLast,
            CBrush* pBrush = NULL, CBrush* pBrushLast = NULL);
        void FillSolidRect(LPCRECT lpRect, COLORREF clr);
        void FillSolidRect(int x, int y, int cx, int cy, COLORREF clr);
        void Draw3dRect(LPCRECT lpRect, COLORREF clrTopLeft, COLORREF clrBottomRight);
        void Draw3dRect(int x, int y, int cx, int cy,
            COLORREF clrTopLeft, COLORREF clrBottomRight);
    
    // Implementation
    public:
        virtual ~CDC();
    #ifdef _DEBUG
        virtual void AssertValid() const;
        virtual void Dump(CDumpContext& dc) const;
    #endif
    
        // advanced use and implementation
        BOOL m_bPrinting;
        HGDIOBJ SelectObject(HGDIOBJ);      // do not use for regions
    
    protected:
        // used for implementation of non-virtual SelectObject calls
        static CGdiObject* PASCAL SelectGdiObject(HDC hDC, HGDIOBJ h);
    };
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?