📄 dc.h
字号:
#ifndef _GOS_DC_H_
#define _GOS_DC_H_
enum _tagDC
{
DT_GETCARETPOS =0x0010,
DT_GETCARETINDEX =0x0020,
DT_CALCRECT =0x0030,
DT_MULTILINE =0x0100,
DT_FILLFULLRECT =0x0200,
DT_WORDBREAK =0x0300,
DT_UNDERLINE =0x0400,
DT_STRIKELINE =0x0800,
DT_LEFT =0x1000,
DT_RIGHT =0x2000,
DT_CENTER =0x3000,
DT_TOP =0x4000,
DT_BOTTOM =0x8000,
DT_VCENTER =0xC000,
DrawTextGrowRow=63,
};
typedef struct _tagDCDTROW
{
LPCTSTR pStr;
LPCTSTR pEnd;
SIZE size;
}DCDTROW,*PDCDTROW;
class CWnd;
class CDisplay;
class CScrollBar;
class CDC
{
public:
//绘图函数
void SetPixel(POINT pt,COLORREF clr);
void MoveTo(POINT pt){m_ptPos=pt;}
void LineTo(POINT pt){PrvLine(m_ptPos,pt);}
void FillSolidRect(LPCRECT pRect,COLORREF clr);
void FillRect(LPCRECT pRect);
void Rectangle(LPCRECT pRect);
void Ellipse(LPCRECT pRect);
void Polyline(PPOINT pPoints,int nCount);
void Polygon(PPOINT pPoints,int nCount);
void DrawRect(LPCRECT pRect,COLORREF crColor,int nPenStyle=PS_SOLID);
void DrawFocusRect(LPCRECT pRect,COLORREF crColor)
{ DrawRect(pRect,crColor,PS_DOT); }
void Draw3dRect(LPCRECT lpRect,COLORREF clrTopLeft,COLORREF clrBottomRight);
void BitBlt(CDC* pSrcDC,DWORD dwRop)
{ BitBlt(pSrcDC->m_rclClip,pSrcDC->m_pBitmap,NULL,dwRop); }
void BitBlt(LPCRECT pDestRect,CBitmap* pBitmap,LPCRECT pSrcRect,DWORD nRop);
//文字处理
int DrawText(const CString& str,LPCRECT pRect,UINT nFormat)
{ return DrawText(LPCTSTR(str),str.GetLength(),pRect,nFormat); }
int DrawText(LPCTSTR pszString,LPCRECT pRect,UINT nFormat)
{ return DrawText(pszString,strlen(pszString),pRect,nFormat); }
int DrawText(CWnd* pWnd,LPCRECT pRect,UINT nFormat);
int DrawText(LPCTSTR pszString,int nCount,LPCRECT pRect,UINT nFormat);
CSize GetTextExtent(const CString& str)
{ return GetTextExtent(LPCTSTR(str),str.GetLength());}
CSize GetTextExtent(LPCTSTR pszString,int nCount);
//绘图属性
CBitmap* SelectObject(CBitmap* pBitmap)
{ CBitmap* pOld=m_pBitmap; m_pBitmap=pBitmap;
m_rop.SelectObject(pBitmap);return pOld; }
CPalette* SelectObject(CPalette* pPalette)
{ CPalette* pOld=m_pPalette;m_pPalette=pPalette;return pOld; }
CPen* SelectObject(CPen* pPen)
{ CPen* pOld=m_pPen;m_pPen=pPen;return pOld; }
CBrush* SelectObject(CBrush* pBrush)
{ CBrush* pOld=m_pBrush;m_pBrush=pBrush;return pOld; }
CFont* SelectObject(CFont* pFont)
{ CFont* pOld=m_pFont; m_pFont=pFont; return pOld; }
COLORREF SetTextColor(COLORREF crColor)
{ COLORREF nOld=m_nTextColor; m_nTextColor=crColor; return nOld; }
COLORREF SetBkColor(COLORREF crColor)
{ COLORREF nOld=m_nBkColor; m_nBkColor=crColor; return nOld; }
int SetROP2(int nDrawMode)
{int nOld=m_nDrawMode;m_nDrawMode=nDrawMode;return nOld; }
CBitmap* GetCurrentBitmap(){return m_pBitmap;}
CPalette* GetCurrentPalette(){return m_pPalette;}
CPen* GetCurrentPen(){return m_pPen;}
CBrush* GetCurrentBrush(){return m_pBrush;}
COLORREF GetTextColor(){return m_nTextColor;}
COLORREF GetBkColor(){return m_nBkColor;}
int GetROP2(){return m_nDrawMode;}
CROP& GetRopObj(){return m_rop;}
void SetOrg(POINT pt){m_ptOrg=pt;}
CPoint GetOrg(){return m_ptOrg;}
void SetClipRect(LPCRECT pRect){m_rclClip=*pRect;};
void GetClipRect(LPRECT pRect){*pRect=m_rclClip;}
POINT GetCurrentPosition(){return m_ptPos;}
//构建
CDC(void);
private:
void PrvLine(POINT pt1,POINT pt2);
void PrvLineV(int x,int y1,int y2);
void PrvLineH(int y,int x1,int x2);
void PrvLineI(POINT pt1,POINT pt2);
void PrvFillEllipse(LPCRECT pRect);
void PrvFillText(CRect& rect,LPCTSTR pszString,LPCTSTR pszStrEnd);
void PrvDrawText(CRect& rect,LPCTSTR pszString,LPCTSTR pszStrEnd,UINT nFormat);
void PrvCalcText(DCDTROW& dr,int nWidth,UINT nFormat);
int PrvTextWidth(LPCTSTR pszString,LPCTSTR pszStrEnd,int nFontSize);
static void PrvPolygon(POINT pt1,POINT pt2,int y,int* pMinX,int* pMaxX);
private:
//data members
CROP m_rop;
CPoint m_ptOrg;
CPoint m_ptPos;
CRect m_rclClip;
COLORREF m_nTextColor;
COLORREF m_nBkColor;
DWORD m_nDrawMode;
CPalette* m_pPalette;
CBitmap* m_pBitmap;
CPen* m_pPen;
CBrush* m_pBrush;
CFont* m_pFont;
};
typedef CDC* PDC;
#endif _GOS_DC_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -