编程词典
明日图书
明日软件
用户注册
用户登录
站内
  当前位置:编程词典服务网 >> 编程词典社区论坛 >> 填充图形区域
  · 填充图形区域

用户:  大麦
发帖:  430 篇
作品:  0 个
回复:  108 篇
技术分:  1156 分
等级:  
注册:  2010-05-11 09:09:40



发表于:2010-07-13 16:41:15
          楼主

填充图形区域
在绘制图形时,有时需要在图形中填充一些颜色或填充某个图像。那么该如何向图形区域中填充颜色或图像呢?设备上下文CDC类提供了4个填充区域的函数,下面分别进行介绍。
(1)FillRect
该方法用所标识的画刷填充一个矩形区域。
语法:
void FillRect( LPCRECT lpRect, CBrush* pBrush );
参数说明:
 lpRect:表示需要填充的矩形区域。
 pBrush:表示一个画刷对象指针,函数将使用该画刷填充矩形区域。
(2)FillSolidRect
该方法用指定的颜色填充一个矩形区域。
语法:
void FillSolidRect( LPCRECT lpRect, COLORREF clr );
参数说明:
 lpRect:表示需要填充的矩形区域。
 clr:标识一个RGB颜色值,函数使用该颜色填充矩形区域。
(3)FillRgn
该方法用所标识的画刷填充一个选区。
语法:
BOOL FillRgn( CRgn* pRgn, CBrush* pBrush );
参数说明:
 pRgn:表示一个选区对象。选区可以通过系统提供的API函数CreateRectRgn、CreateEllipticRgn、CreatePolygonRgn等函数创建。
 pBrush:表示一个画刷对象指针,函数将使用该画刷填充选区。
(4)FillPath
该方法用当前的画刷填充路径。
语法:
BOOL FillPath( );
下面通过一个示例来演示各个区域的填充方法。
例如,填充区域的方法。
(1)创建一个单文档/视图结构的应用程序,工程名称为“FillRC”。
(2)在视图类的OnDraw方法中编写程序代码。
void CFillRCView::OnDraw(CDC* pDC)
{
 CFillRCDoc* pDoc = GetDocument();    //获取文档对象
 ASSERT_VALID(pDoc);       //验证文档对象
 CRect rc(30,40,100,120);       //定义一个区域对象
 CBrush brush(RGB(128,128,128));     //定义一个颜色画刷
 pDC->FillRect(rc,&brush);       //使用颜色填充区域
 brush.DeleteObject();       //删除画刷对象
 CBitmap bmp;         //定义一个位图对象
 bmp.LoadBitmap(IDB_BKBITMAP);     //加载位图
 brush.CreatePatternBrush(&bmp);     //创建位图画刷
 CRect bmpRC(110,40,200,120);     //定义一个区域对象
 pDC->FillRect(bmpRC,&brush);     //使用位图填充区域
 bmp.DeleteObject();        //释放位图对象
 brush.DeleteObject();       //释放画刷对象
 CRect rectrc(210,40,300,120);      //定义一个区域对象
 CRect hrc(280,60,350,140);      //定义一个区域对象
 pDC->Rectangle(rectrc);       //绘制矩形边框
 pDC->Rectangle(hrc);       //绘制矩形边框
 HRGN hRect = CreateRectRgn(210,40,300,120);  //创建一个矩形选区
 HRGN hrgn = CreateRectRgn(280,60,350,140);  //创建一个矩形选区
 HRGN hret = CreateRectRgn(0,0,0,0);    //创建选区
 CombineRgn(hret,hRect,hrgn,RGN_AND);   //组合选区,获取两个选区的公共部分
 brush.CreateSolidBrush(RGB(255,0,0));    //创建一个颜色画刷
 CRgn rgn;          //定义一个选区对象
 rgn.Attach(hret);        //将选区对象附加一个选区句柄
 pDC->FillRgn(&rgn,&brush);      //填充选区
 brush.DeleteObject();       //释放画刷对象
 rgn.Detach();         //分离选区句柄
 DeleteObject(hRect);       //释放选区句柄
 DeleteObject(hrc);        //释放选区句柄
 DeleteObject(hret);        //释放选区句柄
}
 说明:通过CombineRgn函数可以将图形组合在一起形成一个新的图形。
(3)运行程序,效果如图1所示。
 
图1  填充区域

 

本帖赏分:0 分   回复数:0 篇     
修改   删除   引用   回复
该帖暂无回复!
吉林省明日科技有限公司提供技术支持. 
Copyright © 1999-2008 吉林省明日科技有限公司. 吉ICP备10002740
当前时区 GMT+8, 今天是 
刷新页面 - 关于我们 - 设为首页