MFC的绘图
1 相关类
1,1 绘图设备类
CDC类 - 提供了绘图设备的基本功能
CWindowDC类 - 父类是CDC类,主要表示指定的窗口,包括客户区和非客户区
CClientDC
CPaintDC
CMetaFileDC.保存图形的绘制的代码,以便将来多次使用
CDC类的使用
创建DC
virtual BOOL CreateDC
(
LPCTSTR lpszDriveName,
LPCTSTR lpszDeviceName,
LPCTSTR lpszOutput, //设备的接口
const void* lpInitData // 初始化数据
) ;
如果表示显示器
CreateDC("DISPLAY",NULL,NULL,NULL)
使用
在设备绘图,输出字符等操作
MoveTo/LineTo/TextOut
删除DC
CDC:DeleteDC,
绘图对象类的使用
3.1 画笔,画刷和字体的使用步骤
3.1.1 创建绘图对象
3.1.2 将绘图对象选入到当前的绘图设备中
3.1.3 使用绘图对象
3.1.4 将绘图对象从当前的绘图设备中选出
// 画笔的使用
CPen pen(PS_SOLID,10,RGB(255,0,0));
// 选入到绘图设备
CClientDC dc(this);
dc.SelectObject(&pen);
CPen* pOldPen = dc.SelectObject(&pen);
dc.Rectangle(100,100,300,300)
... 画刷的使用
CBitmap bmp;
bmp.LoadBitmap(..);
CBrush brush(&bmp);
// 字体的使用
CFont font;
font.CreatePointFont(1000,"黑体");
CClientDC dc(this);
CFont* pOldFont = dc.SelectObject(&font);
dc.TextOut()
dc.SelectObject(pOldFont);
font.DeleteObject();
位图.............
CBitmap bmp;
bmp.LoadBitmap(ID);
CClientDC dc(this);
CDC dcBmp;
dcBmp.CreateCompatibleDC(&dc);
dcBmp.SelectObject(&bmp);
dcBmp.BitBlt(0,0,800,600,&dcBmp,0,0,SRCCOPY);
// dcBmp.StretchBlt(0,0,800,600,&dcBmp,0,0,cx,cy,SRCCOPY);
dcBmp.DeleteDC();
bmp.DeleteObject();
3.3 区域的使用步骤
3.3.1 创建区域
CRgn::CreateXXX
3.3.2 CombineRgn
CRgn rgn1,rgn2;
rgn1.CreateEllipticRgn(100,100,300,300);
rgn2.CreateEllipticRgn(200,100,400,300);
1000 0000
1 相关类
1,1 绘图设备类
CDC类 - 提供了绘图设备的基本功能
CWindowDC类 - 父类是CDC类,主要表示指定的窗口,包括客户区和非客户区
CClientDC
CPaintDC
CMetaFileDC.保存图形的绘制的代码,以便将来多次使用
CDC类的使用
创建DC
virtual BOOL CreateDC
(
LPCTSTR lpszDriveName,
LPCTSTR lpszDeviceName,
LPCTSTR lpszOutput, //设备的接口
const void* lpInitData // 初始化数据
) ;
如果表示显示器
CreateDC("DISPLAY",NULL,NULL,NULL)
使用
在设备绘图,输出字符等操作
MoveTo/LineTo/TextOut
删除DC
CDC:DeleteDC,
绘图对象类的使用
3.1 画笔,画刷和字体的使用步骤
3.1.1 创建绘图对象
3.1.2 将绘图对象选入到当前的绘图设备中
3.1.3 使用绘图对象
3.1.4 将绘图对象从当前的绘图设备中选出
// 画笔的使用
CPen pen(PS_SOLID,10,RGB(255,0,0));
// 选入到绘图设备
CClientDC dc(this);
dc.SelectObject(&pen);
CPen* pOldPen = dc.SelectObject(&pen);
dc.Rectangle(100,100,300,300)
... 画刷的使用
CBitmap bmp;
bmp.LoadBitmap(..);
CBrush brush(&bmp);
// 字体的使用
CFont font;
font.CreatePointFont(1000,"黑体");
CClientDC dc(this);
CFont* pOldFont = dc.SelectObject(&font);
dc.TextOut()
dc.SelectObject(pOldFont);
font.DeleteObject();
位图.............
CBitmap bmp;
bmp.LoadBitmap(ID);
CClientDC dc(this);
CDC dcBmp;
dcBmp.CreateCompatibleDC(&dc);
dcBmp.SelectObject(&bmp);
dcBmp.BitBlt(0,0,800,600,&dcBmp,0,0,SRCCOPY);
// dcBmp.StretchBlt(0,0,800,600,&dcBmp,0,0,cx,cy,SRCCOPY);
dcBmp.DeleteDC();
bmp.DeleteObject();
3.3 区域的使用步骤
3.3.1 创建区域
CRgn::CreateXXX
3.3.2 CombineRgn
CRgn rgn1,rgn2;
rgn1.CreateEllipticRgn(100,100,300,300);
rgn2.CreateEllipticRgn(200,100,400,300);
1000 0000