《Visual C++从入门到精通》关于填充图形区域
发表在C语言图书答疑 2013-05-12
是否精华
版块置顶:
老师,您好:

我用的是《Visual C++从入门到精通》,在第13章 P.314页的“13.3.4填充图形区域”一节里有
一段程序,我按照它的方法写了以下二段程序,在 OnPaint()中:

1.
// 绘制圆形 (填充椭圆形)

CBrush Brush1;
Brush1.CreateSolidBrush(RGB(0,0,255));

HRGN hRgn1 = CreateEllipticRgn(50,50,200,200);  // 创建椭圆选区

CRgn EllipseRgnObject;
EllipseRgnObject.Attach(hRgn1);  // 将椭圆选区附加到选区对象

dc.FillRgn(&EllipseRgnObject, &Brush1);  // 用颜色画刷填充选区

EllipseRgnObject.Detach();  // 分离椭圆选区的句柄
EllipseRgnObject.DeleteObject();  // 删除选区对象,释放内存

这段程序显示成功。

2.
// 绘制多边形 (填充多边形)

CBrush Brush2;
Brush2.CreateSolidBrush(RGB(255,255,255));

CPoint Points[2];  // 定义三角形的三个角的端点数组
// 给三个角的端点数组赋值
Points[0].x = 50;
Points[0].y = 50;
Points[1].x = 200;
Points[1].y = 50;
Points[2].x = 200;
Points[2].y = 100;

HRGN hRgn2 = CreatePolygonRgn(Points,3,WINDING);  // 创建三角形选区

CRgn PolygonRgnObject;
PolygonRgnObject.Attach(hRgn2);  // 将三角形选区附加到选区对象

dc.FillRgn(&PolygonRgnObject, &Brush2);  // 用颜色画刷填充选区

PolygonRgnObject.Detach();  // 分离椭圆选区的句柄
PolygonRgnObject.DeleteObject();  // 删除选区对象,释放内存

这段程序编译成功,可没有显示出图形,不知道是什么原因,请老师给以指教,谢谢!
分享到:
精彩评论 1
cui_mrkj
学分:0 LV1
TA的每日心情
?
2020-08-20 13:57:19
2013-07-05
沙发
创建多边形区域:“CreatePolygonRgn(Points,3,WINDING); // 创建三角形选区”有错误。
CreatePolygonRgn函数的第一个参数是画多边形的第一个起始点,是POINTAPI类型
用Points[0],而不是Points。
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照