云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 实习指导书(3)-基于MFC的单文档程序设计

实习指导书(3)-基于MFC的单文档程序设计

  • 62 次阅读
  • 3 次下载
  • 2025/6/15 10:11:56

WHITE_PEN BLACK_PEN NULL_PEN

例如:

6 7 8

白色笔 黑色笔 空笔

pDC->SelectStockObject(BLACK_PEN);

③ 绘制线状图

在将笔对象选入DC后,就可以使用CDC类中的绘图函数,利用DC中的笔对象,来画线状图及面状图的边线。如果不创建和选入笔对象,则使用的是DC中的默认笔,为单像素宽的实心黑色笔。

Windows中的线状图有直线、折线、矩形、(椭)圆(弧)等。

④ 删除笔

不能直接删除已使用过的笔对象,必须先将它从DC中释放出来后才能删除。释放的方法是装入其他的笔对象(一般是重新装入原来的笔对象)。例如:

pDC->SelectObject(pOldPen);

删除笔对象的方法有如下几种: ?

删除笔内容:调用笔类CDC的成员函数DeleteObject删除笔的当前内容(但是未删除笔对象,以后可再用成员函数CreatePen在笔对象中继续创建新的笔内容)。例如:pen.DeleteObject(); ? ?

删除笔对象:使用删除运算符delete将笔对象彻底删除,例如delete pen;。 自动删除:若笔对象为局部变量,则在离开其作用域时,笔对象会被系统自动删除。

⑤ 例子

下面为一段较完整地创建与使用笔的例子代码:

CDC* pDC = GetDC(); // 获取DC

CPen pen, *pOldPen; // 定义笔对象和指针 // 创建单像素宽的红色虚线笔

- 9 -

pen.CreatePen(PS_DASH, 0, RGB(255, 0, 0)); pOldPen = pDC->SelectObject(&pen); // 选入红色笔 pDC->MoveTo(10, 10); pDC->LineTo(100, 100); // 画直线 pDC->SelectObject(pOldPen); // 选出红色笔 pen.DeleteObject(); // 删除红色笔 // 创建10单位宽的绿色实心笔

pen.CreatePen(PS_SOLID, 10, RGB(0, 255, 0)); pOldPen = pDC->SelectObject(&pen); // 选入绿色笔 pDC->Rectangle(10, 10, 100, 100); // 画矩形 pDC->SelectObject(pOldPen); // 选出绿色笔 delete pen; // 删除笔对象 ReleaseDC(pDC); // 释放DC

4.画刷

在Windows中,面状图必须用刷(brush)来填充,所以面色是由刷色来确定的。MFC中的刷类为CBrush(它也是CGDIObject的派生类),刷的创建与使用的步骤与笔的相似。

① 构造函数

CBrush类有4个构造函数,分别用于创建空刷、实心刷、条纹刷和图案刷: ? ? ?

CBrush( ); // 创建一个刷的空对象

CBrush( COLORREF crColor ); // 创建颜色为crColor的实心刷

CBrush( int nIndex, COLORREF crColor ); // 创建风格由nIndex指定且颜色为crColor的条纹(hatch,孵化/影线)刷,其中nIndex可取条纹风格(Hatch Styles)值见表3和图4。

表3 条纹风格nIndex值 符号常量 HS_HORIZONTAL HS_VERTICAL

数值 0 1

风格 水平线 垂直线

- 10 -

HS_FDIAGONAL HS_BDIAGONAL HS_CROSS HS_DIAGCROSS

2 3 4 5

正斜线 反斜线 十字线(正网格) 斜十字线(斜网格)

水平线 垂直线 正斜线 反斜线 十字线 斜十字线

图4 条纹刷的种类

?

CBrush(CBitmap* pBitmap); // 创建位图为pBitmap的图案(pattern)刷

② 创建函数

与构造函数相对应,CBrush类有多个创建不同类型刷的成员函数,如: ? ? ?

BOOL CreateSolidBrush( COLORREF crColor ); // 创建实心刷

BOOL CreateHatchBrush( int nIndex, COLORREF crColor ); // 创建条纹刷 BOOL CreatePatternBrush( CBitmap* pBitmap ); // 创建图案刷

③ 预定义刷

预定义的刷对象见表4有:

表4 预定义刷 符号常量 WHITE_BRUSH LTGRAY_BRUSH GRAY_BRUSH DKGRAY_BRUSH BLACK_BRUSH HOLLOW_BRUSH NULL_BRUSH

数值 0 1 2 3 4 5 5

刷 白刷 亮灰刷 灰刷 暗灰刷 黑刷 空刷 空刷

- 11 -

④ 选入刷

与笔一样,可以用函数SelectObject或SelectStockObject将自定义刷或预定义刷选入DC中,供绘面状图时使用。如果未选入任何刷,则系统会使用DC中的默认刷来绘图,默认刷为白色实心刷。

⑤ 例子

下面是一个创建、选入并使用自定义实心刷的简单例子代码段: CRect rect(10, 10, 210, 160);

CBrush brush(RGB(0, 255, 0) ),

*pOldBrush;

CDC* pDC = GetDC(); pOldBrush =

pDC->SelectObject(&brush);

pDC->Rectangle(&rect);

pDC->SelectObject(pOldBrush);

图5 GDI对象的类层次结构

brush.DeleteObject();

ReleaseDC(pDC);

5.绘图工具

Windows的绘图工具为各种GDI(Graphics Device Interface,图形设备接口)对象,备封装在对应的CGDIObject派生类中。将GDI对象用SelectObject函数选入DC后,就可利用对应的绘图工具进行图形绘制。

① GDI对象

GDI对象(绘图工具)有笔、刷、位图、字体、调色板、区域等,对应的MFC类为CPen、CBrush、CBitmap、CFont等。这些绘图工具对象类都是CGDIObject的派生类,而CGDIObject则是直接从CObject类派生的抽象基类,参见图6。

- 12 -

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

WHITE_PEN BLACK_PEN NULL_PEN 例如: 6 7 8 白色笔 黑色笔 空笔 pDC->SelectStockObject(BLACK_PEN); ③ 绘制线状图 在将笔对象选入DC后,就可以使用CDC类中的绘图函数,利用DC中的笔对象,来画线状图及面状图的边线。如果不创建和选入笔对象,则使用的是DC中的默认笔,为单像素宽的实心黑色笔。 Windows中的线状图有直线、折线、矩形、(椭)圆(弧)等。 ④ 删除笔 不能直接删除已使用过的笔对象,必须先将它从DC中释放出来后才能删除。释放的方法是装入其他的笔对象(一般是重新装入原来的笔对象)。例如: pDC->SelectObject(pOldPen); 删除笔对象

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com