1.笔记

1.1路径层函数

1.1.1打开路径层

函数原型:

BOOL CDC::BeginPath();

没有参数,如果调用成功,返回非零,否则返回零。功能是在设备上下文中打开路径层。

1.1.2关闭路径层

函数原型:

BOOL CDC::EndPath();

没有参数,如果调用成功,返回非零,否则返回零。功能是关闭路径层,并将路径层选入设备上下文。该函数在完成绘制后使用。

1.1.3填充路径层

函数原型:

BOOL CDC::FillPath();

没有参数,如果调用成功,返回非零,否则返回零。功能是使用当前画刷以及当前填充模式对路径层内部进行填充。

1.1.4绘制并填充路径层

函数原型:

BOOL CDC::StrokeAndFillPath();

没有参数,如果调用成功,返回非零,否则返回零。功能是使用当前画笔绘制当前路径层轮廓,使用当前画刷填充路径层内部。

2.使用练习

2.1给定4个顶点P0(200,300)、P1(700,500)、P2(1200,300)、P3(700,100),使用直线函数分别绘制三角形P0P1P2、P0P2P3,三角形内部使用GRAY_BRUSH库画刷填充,在设备坐标系中使用路径层函数编程,实现通过绘制两个三角形来绘制一个四边形。

编程实现:

void CExample1View::OnDraw(CDC* pDC)
{CExample1Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)return;// TODO: 在此处为本机数据添加绘制代码CPoint p[4];p[0] = CPoint(200, 300); p[1] = CPoint(700, 500);p[2] = CPoint(1200, 300); p[3] = CPoint(700, 100);CBrush* p0ldBrush = (CBrush*)pDC->SelectStockObject(GRAY_BRUSH);pDC->BeginPath();//打开路径层pDC->MoveTo(p[0]);//绘制三角形P0P1P2pDC->LineTo(p[1]);pDC->LineTo(p[2]);pDC->LineTo(p[0]);pDC->EndPath();//绘制完,关闭路径层pDC->FillPath();//填充路径层内部pDC->BeginPath();pDC->MoveTo(p[0]);//绘制三角形P0P2P3pDC->LineTo(p[2]);pDC->LineTo(p[3]);pDC->LineTo(p[0]);pDC->EndPath();pDC->FillPath();pDC->SelectObject(p0ldBrush);
}

2.2使用直线函数绘制顶点为P0(-280,40)、P1(-440,200)、P2(-520,0)、P3(-440,-200)、P4(-320,-80)、P5(-240,-200)、P6(-80,-80)的多边形P,多边形边界为3像素宽黑色实线,内部填充为红色,在自定义坐标系内实现。

编程实现:

void CExample1View::OnDraw(CDC* pDC)
{CExample1Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)return;// TODO: 在此处为本机数据添加绘制代码CRect rect;GetClientRect(rect);pDC->SetMapMode(MM_ANISOTROPIC);pDC->SetWindowExt(rect.Width(), rect.Height());pDC->SetViewportExt(rect.Width(), -rect.Height());pDC->SetViewportOrg(rect.Width() / 2, rect.Height() / 2);rect.OffsetRect(-rect.Width() / 2, -rect.Height() / 2);CPoint p[7];p[0] = CPoint(-280, 40); p[1] = CPoint(-440, 200);p[2] = CPoint(-520, 0); p[3] = CPoint(-440, -200);p[4] = CPoint(-320, -80); p[5] = CPoint(-240, -200);p[6] = CPoint(-80, 80);CBrush NewBrush, * pOldBrush;NewBrush.CreateSolidBrush(RGB(255, 0, 0));pOldBrush = pDC->SelectObject(&NewBrush);CPen NewPen, * pOldPen;NewPen.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));pOldPen = pDC->SelectObject(&NewPen);pDC->BeginPath();pDC->MoveTo(p[0]);for (int i = 1; i < 7; ++i)pDC->LineTo(p[i]);pDC->LineTo(p[0]);pDC->EndPath();pDC->StrokeAndFillPath();pDC->SelectObject(pOldBrush);pDC->SelectObject(pOldPen);
}

MFC之学习路径层函数相关推荐

  1. 我的MFC/C++学习笔记 http://blog.bccn.net/CrystalFan/6909

    2009.07.31 ------------------------------------------------------------------------------------ No.1 ...

  2. MFC消息处理学习总结

    Windows消息机制概述 http://www.cppblog.com/suiaiguo/archive/2009/07/18/90412.html 消息是指什么?      消息系统对于一个win ...

  3. halcon从入门到精通pdf_机器视觉软件开发新人入门必看 --机器视觉软件开发学习路径...

    机器视觉是机械.运动.控制.光学.软件.算法于一体的交叉学科,对于学工科的人来说,机械.运动.控制都有一定的了解,对于软件.算法.光学不是很了解.一台设备,有一个到二个机械设计师或者结构工程师,那么这 ...

  4. cocos2d-x 通过JNI实现c/c++和Android的java层函数互调 .

    转载请注明来自:Alex Zhou的程序世界,本文链接:http://codingnow.cn/cocos2d-x/992.html 本文主要实现两个功能: (1)通过Android sdk的API得 ...

  5. 通过一款早期代码抽取壳入门学习 so 层分析

    1. 前言 文章开始需要提下的就是,在如今看雪论坛的用户一发关于安卓加固的文章动辄就是有关脱壳机.vmp.函数级指令抽取或者各大厂商的加固等技术的情况下,为何我要发一个代码抽取壳的分析,并且还是早期的 ...

  6. 转行软件开发的通用学习路径(转自刘校长亲笔)

    [序言] 哈!2015年到啦,我知道好些个朋友今天都许下心愿.立下誓言:"从今天起好好学习 .天天向上,一定要以XXXX方面取得成功!"其中就不乏有朋友是打算在今年从某个" ...

  7. ROS(1和2)机器人操作系统相关书籍、资料和学习路径

    ROS机器人相关书籍与资料(更新日期2017年11月) ROS发展10年了,已经逐渐成为通用的机器人操作系统标准.ROS 2相关资料链接:http://blog.csdn.net/zhangrelay ...

  8. 2019全新大数据系统学习路径!

    2019全新大数据系统学习路径! 很多初学者,对大数据的概念都是模糊不清的,大数据是什么,能做什么,学的时候,该按照什么线路去学习,学完往哪方面发展,想深入了解,想学习的同学欢迎加入大数据学习qq群: ...

  9. RS中深度学习的两类方法:表示学习和匹配函数学习

    目录 1 基于表示学习 1.1 无序交互 MLP 自动编码器AE 注意力机制 1.2 序列交互 RNN CNN 注意力机制 1.3 多模态内容 分类属性 用户评论 多媒体内容 1.4 链路图 端到端: ...

最新文章

  1. ExtJS 4.x 得到资源树上任意的节点对象
  2. arm中断保护和恢复_ARM中断异常处理的返回
  3. python 列表 头部 尾部 添加元素
  4. 【算法竞赛学习】金融风控之贷款违约预测-特征工程
  5. mongoose --- createUser
  6. Android实现网络音乐播放器
  7. Hardware Emulation Platform (硬件仿真平台) 在IC验证中的运用情况如何?
  8. 价值连城 Apple研究院总监 Ruslan Salakhutdinov的采访 给AI 深度学习从业者的建议
  9. 在线读取office 文件(Word excel 等)
  10. 11.0高等数学五-函数项级数收敛与一致收敛
  11. Python新世界(14)-14行Python代码即可去除抖音水印
  12. 103000大写加零吗_金额大写前面要加零的有哪些
  13. 万字总结Linux内核过滤框架(Nftables)
  14. MySQL order by、desc、limt的使用
  15. 电脑开机内存占用过高处理
  16. Docker 上传镜像到docker hub
  17. 基于CocosCreator的切水果小游戏(二)
  18. 多媒体制作技术心得体会_交互式多媒体课件制作的一点心得体会
  19. ThinkPHP中的exp查询
  20. python学习笔记8

热门文章

  1. CAD看图软件怎么快速进行对图纸的打印?
  2. TP-LINK无线路由器WR340G+ 54M支持WDS - 东莞市泰讯电子科技有限公司
  3. asp毕业设计——基于asp+access的订单管理系统设计与实现(毕业论文+程序源码)——订单管理系统
  4. FPGA图像处理_中值滤波、均值滤波、极值滤波
  5. node内存溢出:JavaScript heap out of memory
  6. eclipse 项目中搜索资源(类方法,文件名,文件中的字符串)
  7. 深圳Go培训:Go语言适合干什么?
  8. “熊猫烧香”病毒简介及特征
  9. 金立e3t刷android4.4,金立E3T刷机包 基于百度云官方ROM 深度精简 超强权限 省电耐用 安全稳定...
  10. Juniper设备审计