5.1 代码解释: 1. CPen newmen( PS SOLID,1,RGB(0,2550));生成一支颜色为绿色、宽度为1个像 素的实心画笔。 2 CBrush newbrush(RGB(0,0,255));生成一只颜色为蓝色的画刷。 3CPen* pOldpen= dc Selectobject(& newmen);把刚生成的画笔选进设备环境对象dc, 这样再画线就用新的笔了。当 Selectobject函数的参数为画笔类型时,返回值为原来所 用画笔的指针, 4 CBrush* pOldbrush=dc. Selectobject(& Rnewbrush);把刚生成的画刷选进设备环境对 象dc。当 Selectobject函数的参数为画刷类型时,返回值为原来所用画刷的指针 5dc. Selectobject( pOldpen);绘图完毕后把原来的画笔再选进设备环境对象。 6dc. Selectobject( pOldbrush);绘图完毕后把原来的画刷再选进设备环境对象 Cpen类的构造函数声明是: CPen(int nPenStyle, int n Width, COLORREF crColor) 参数 oPen Style指明画笔的风格。 n width指明以象素为单位的画笔宽度。 crColor包含了 画笔的RGB值 n Pen Style的取值有以下几种: PS SOLD:创建一支实线画笔 PS DASH:创建一支虚线画笔 PS DOT:创建一支点线画笔 PS DASHDOT:创建一支虚线和点交替的画笔 PS DASHDOTDOT:创建一支虚线和两点交替的画笔
5.1 代码解释: 1.CPen newpen(PS_SOLID,1,RGB(0,255,0));生成一支颜色为绿色、宽度为1个像 素的实心画笔。 2.CBrush newbrush(RGB(0,0,255));生成一只颜色为蓝色的画刷。 3.CPen *pOldpen=dc.SelectObject(&newpen);把刚生成的画笔选进设备环境对象dc, 这样再画线就用新的笔了。当SelectObject函数的参数为画笔类型时,返回值为原来所 用画笔的指针。 4.CBrush *pOldbrush=dc.SelectObject(&newbrush);把刚生成的画刷选进设备环境对 象dc。当SelectObject函数的参数为画刷类型时,返回值为原来所用画刷的指针。 5.dc.SelectObject(pOldpen);绘图完毕后把原来的画笔再选进设备环境对象。 6.dc.SelectObject(pOldbrush);绘图完毕后把原来的画刷再选进设备环境对象。 Cpen类的构造函数声明是: CPen(int nPenStyle,int nWidth,COLORREF crColor); 参数nPenStyle指明画笔的风格。nWidth指明以象素为单位的画笔宽度。crColor包含了 画笔的RGB值。 nPenStyle的取值有以下几种: PS_SOLD: 创建一支实线画笔。 PS_DASH : 创建一支虚线画笔。 PS_DOT : 创建一支点线画笔。 PS_DASHDOT: 创建一支虚线和点交替的画笔。 PS_DASHDOTDOT: 创建一支虚线和两点交替的画笔
5.2 52GD和 CGdiobject类 学习目标 1.了解图形设备接口 2.了解类 CGdiobject极其派生类
5.2 GDI和CGdiObject类 学习目标 1.了解图形设备接口 2. 了解类CGdiObject极其派生类 5.2 返回第5章
5.2 绘图程序实例 1.用应用向导产生单文档程序框架( Bmp Test) 2.修改、添加瓷源 1.添加菜单 1. ID GRAPH TRACK 轨迹 2. ID GRAPH MOVE 移动 2.添加位图 IDB BITI 2. IDB BIT2 3.添加数据类型及变量
绘图程序实例一 1. 用应用向导产生单文档程序框架(BmpTest ) 2. 修改、添加资源 1. 添加菜单 1. ID_GRAPH_TRACK 轨迹 2. ID_GRAPH_MOVE 移动 2. 添加位图 1. IDB_BIT1 2. IDB_BIT2 3. 添加数据类型及变量 5.2
class CMoveTestView: public Cview 5.2 protected: /create from serialization only CMoveTestviewO DECLARE_ DYNC REATE(CMoveTestview) private CString flag: BOoL drawtrack struct pointstruct( CPoint point; struct pointstruct "next } struct pointstruct *pointlisthead, * pointlisttrail flag:判断选择的是“轨道”菜单项还是“车轮”菜单项按钮: drawtrack:当用户选择轨道菜单项时,判断是否画轨道; struct pointstruct:用来记录轨道中各个点的结构体 pointlisthead:用户所绘制轨道的点链表的头结点 pointlisttrail:用户所绘制轨道的点链表的尾结点
class CMoveTestView : public CView { protected:// create from serialization only CMoveTestView(); DECLARE_DYNCREATE(CMoveTestView) private: CString flag; BOOL drawtrack; structpointstruct{ CPointpoint; structpointstruct*next; }; structpointstruct*pointlisthead,*pointlisttrail; …… } 5.2 flag:判断选择的是“轨道”菜单项还是“车轮”菜单项按钮; drawtrack:当用户选择轨道菜单项时,判断是否画轨道; struct pointstruct:用来记录轨道中各个点的结构体; pointlisthead:用户所绘制轨道的点链表的头结点; pointlisttrail:用户所绘制轨道的点链表的尾结点
4.添加函数 5.2 1.添加菜单响应函数 void CMove TestView:: On GraphMoveo flag="move MoveObjecto void CMove Testview:: On Graph Track flag="track 代码解释: 2当选择菜单“移动”时,把贴值为么a2 1.当选择菜单“轨迹”时,把fag赋值为“ move i 3. Moveobject();调用此函数可产生沿着画好轨道运动的 车轮。该函数将在后面给出
4. 添加函数 1.添加菜单响应函数 5.2 void CMoveTestView::OnGraphMove() { flag="move"; MoveObject(); } void CMoveTestView::OnGraphTrack() { flag="track"; } 代码解释: 1.当选择菜单“轨迹”时,把flag赋值为“track”; 2.当选择菜单“移动”时,把flag赋值为“move”; 3.MoveObject();调用此函数可产生沿着画好轨道运动的 车轮。该函数将在后面给出