2024年4月12日发(作者:)
MFC经典绘图方法总结
Windows 绘图的实质就是利用 windows提供的图形设备接口GDI(Graphics Device
Interface)将图形会制在显示器上。
为了支持GDI绘图,MFC提供了两种重要的类:
设备上下文DC(Device Context)类,用于设置绘图属性和绘制图形;
绘图对象类,封装了各种GDI绘图对象,包括画笔、刷子、字体、位图、调色板和区域。
CDC类介绍:
在MFC中,CDC是设备上下文类的基类,派生类包括:CClientDC, CPaintDC,
CWindowDC, CMetaFileDC类
CClientDC 客户区设备上下文, 绘制客户区时
CPaintDC 一般发生在窗口需要重绘时
CWindwDC 可以绘制整个窗口,通常在窗口WM_NCPAINT消息的响应函数
CWnd::OnNCPaint()中使用
CMetaFileDC 专门用于图元文件的绘制,图元文件记录一组GDI命令,重建图形输出。
CDC包含m_hDC和 m_hAttribDC二个设备上下文。 CDC指导所有对m_hDC的输出
GDI调用(SetTextColor)以及对m_hAttribDC的大部分属性GDI调用(GetTextColor)。
CDC对象的重要函数如下:
1、为指定设备创建上下文 virtual BOOL CreateDC(...)
比如创建一个为屏幕的设备上下文
CDC dc;
DC("DISPLAY", NULL, NULL,NULL);
2、创建内存设备上下文,与指定设备上下文兼容 virtual BOOL
CreateCompatibleDC( CDC * pDC)
3、删除CDC对象对应的Windows设备上下文, 通常不调用该函数而是使用析构程序
virtual BOOL DeleteDC();
4、将HDC句柄转化为设备上下文的句柄: CDC *pDC=CDC::FromHandle( hDC )
5、选择GDI对象入选到设备上下文中,一共有五种形式:
CPen * SelectObject( CPen * pPen) ;
CBrush * SelectObject( CBrush * pBrush) ;
virtual CFont * SelectObject( CFont * pFont) ;
CBitmap * SelectObject( CBitmap * pBitmap) ;
int SelectObject( CRgn * pRgn) ;
例:
Cpen cpen;
Pen( PS_SOLID, 2, RGB(255,0,0) );
Cpen *pOldPen=(CPen*)pDC->SelectObject(&pen); //设置新画笔,记录旧画笔
....
pDC->SelectObject(pOldPen); //还原
画笔
三种方法创建画笔
1/构造函数:
CPen();
CPen( int nPenStyle, int nWidth, COLORREF crColor );
CPen(...)略
2/CreatePen( int nPenStyle, int nWidth, COLORREF crColor )
3/CreatePenIndirect( LPLOGPEN lpLogpen )
typedef struct tagLOGPEN{
UINT lopnStyle;
POINT lopnWidth;
COLORREF lopnColor;
}LOGPEN, *LPLOGPEN;
例:
LOGPEN lppn;
lor=RGB(255,0,0);
ype=PS_DASHDOT;
dth.x=2;
dth.y=2;
CPen pen;
PenIndirect( &lppn );
画刷
三种方法创建
1/构造函数:
CBrush();
CBrush(COLROREF crColor);
CBrush(int nIndex, COLORREF crColor);
nIndex 哪种类型的网格, HS_BDIAGONAL HS_CROSS


发布评论