1.笔记

1.1绘制扇形函数

函数原型:

BOOL CDC::Pie(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4);
BOOL CDC::Pie(LPCRECT lpRect,POINT ptStart,POINT ptEnd);

调用成功返回非零,否则返回零。所有参数和绘制椭圆弧函数的参数含义一致(见上篇博客),即扇形和参数的关系是:

扇形由弧和直线段组成,故参数的两个点的填写顺序由弧方向决定,默认情况依然是逆时针方向,顺时针方向时依然要用SetArcDirection函数。

2.使用练习

2.1按照如下过程绘制太极图案(阴阳鱼)。

显然,自建原点为客户区中心的坐标系比较好计算坐标,半圆部分用扇形实现,黑色的大半圆需要设置弧的方向为逆时针。

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);int r = 300;CPen NewPen, * pOldPen;NewPen.CreatePen(PS_SOLID, 1, RGB(255, 255, 255));//创建白笔CBrush* pOldBrush = (CBrush*)pDC->SelectStockObject(BLACK_BRUSH);//黑刷,黑笔pDC->Pie(-r, -r, r, r, 0, -r, 0, r);//step apOldBrush = pDC->SelectObject(pOldBrush);//白刷,黑笔pDC->Pie(-r, -r, r, r, 0, r, 0, -r);//step bpOldBrush = pDC->SelectObject(pOldBrush);//黑刷,黑笔CRect rect1(-r / 2, -r, r / 2, 0);pDC->Ellipse(rect1);//step cpOldBrush = pDC->SelectObject(pOldBrush);//白刷pOldPen = pDC->SelectObject(&NewPen);//白笔rect1.OffsetRect(0, r - 1);//少平移一个像素,防止遮盖大圆上边界线pDC->Ellipse(rect1);//step drect1.OffsetRect(0, -r + 1);//移回下边rect1.DeflateRect(r / 3, r / 3);//向中心收缩pDC->Ellipse(rect1);//step epOldBrush = pDC->SelectObject(pOldBrush);//黑刷pOldPen = pDC->SelectObject(pOldPen);//黑笔rect1.OffsetRect(0, r);//移到上边pDC->Ellipse(rect1);//step f
}

最终效果:

MFC之学习扇形绘制与绘制阴阳鱼图相关推荐

  1. Canvas学习:封装Canvas绘制基本图形API

    Canvas学习:封装Canvas绘制基本图形API Canvas Canvas学习 从前面的文章中我们了解到,通过Canvas中的CanvasRenderingContext2D对象中的属性和方法, ...

  2. MFC单文档项目动态绘制十字线

    MFC单文档项目动态绘制十字线 因为最近的一个项目涉及到了这方面的内容,所以基于自己已学的知识,在网上搜索了许多相关的资料,这些资料各有可取之处,但相对来说比较杂散,不够凝练.在经过一番整理及代码实践 ...

  3. Python中Tkinter模块的Canvas控件使用学习(2:绘制简单工程符号)

      之前学习HTML5中Canvas绘图方法时,为测试函数功能,使用JavaScript在Canvas中绘制了多种工程图符号,下面两张图是工程图符号的原图.本文参照JavaScript绘图程序,使用p ...

  4. 超酷炫!Facebook用深度学习和弱监督学习绘制全球精准道路图

    作者 | Saikat Basu等 译者 | 陆离 责编 | 夕颜 出品 | AI科技大本营(ID: rgznai100) 导读:现如今,即使可以借助卫星图像和绘制软件,创建精确的道路图也依然是一个费 ...

  5. 【python教程入门学习】用pyecharts绘制带动画效果的“时间轮播图

    今天我们要分享的是一个数据可视化的案例. 在讲述本文之前,为了满足大家的好奇心,我们先来看看最终做出来的效果呈现. 不管学习什么技术,官网是最好的老师.对于pyecharts绘图库,知道了他的绘图原理 ...

  6. Asp.Net实例:C# 绘制统计图(三) ——扇形统计图的绘制

    三. 扇形统计图的绘制<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /& ...

  7. Markdown学习之(2)-绘制表格和流程图

    MarkDown表格 + 流程图绘制 表格绘制 在Markdown上写一个表格真是让人头疼的事情,写的不流畅还要担心格式.我为大家总结了以下三种方法,前两种大家或许司空见惯了,第三种是神器... 一. ...

  8. 一起学习如何使用Photoshop绘制像素图片

     通过这篇教程,我们来学习如何绘制像素画.你能够学会如何制作很棒的美工,就像eBoy和Armyof Trolls(两款游戏)做的那样. 简介 像素图对于绘制图标,等轴图,甚至是某些场景来说都非常有 ...

  9. 【学习OpenCV4】OpenCV绘制标记/线/矩形/文字/圆等

    本文分享内容来自图书<学习OpenCV 4:基于Python的算法实战>,该书内容如下: 第1章 OpenCV快速入门: 第2章 图像读写模块imgcodecs: 第3章 核心库模块cor ...

  10. AE学习笔记一:绘制其他形状和取消填充

    在AE学习中我们可能需要绘制很多工具,但工具栏只有矩形,这个时候有两种方法 方法一:长按鼠标右键就会出现以下画面 方法二:图层-->新建-->形状图层 点击添加即可添加其他图层 然后添加出 ...

最新文章

  1. 活动目录系列之三---域控制器常规卸域
  2. 一篇文章带你详解 HTTP 协议之报文首部及字段详解(中)
  3. Android keymaster的介绍和总结
  4. Elasticsearch 100问(下)
  5. docker 返回错误信息与本地不一致_Docker基本配置及常用命令
  6. 什么是模拟光端机?模拟光端机优缺点介绍!
  7. 无法打开多维数据集(使用Dundas的OLAP显示控件时的一个小的问题)
  8. Ember.js 1.0 RC6 发布,JavaScript 框架
  9. word2vec 使用gensim训练词向量
  10. 通过代码下载全国范围详细区县行政区Shp数据
  11. Atitit 团队激励 理论与措施 目录 1. 马斯洛需求理论 1 2. 赫兹伯格双因素理论 1 3. X理论y理论 1 4. 期望理论。。 1 1.马斯洛需求理论 激励方法 福利 奖金
  12. 【K8S集群安装二】K8S集群安装步骤
  13. ios工程-如何添加mixpanel来实现统计用户的点击量、玩游戏时长
  14. 0基础学Java需要多久?
  15. MATLAB代码保存为word,MATLAB怎么保存为Word?
  16. Java——使用多线程模拟真实高并发业务并保证安全性(一)
  17. 力天创见智慧商业解决方案
  18. 机器学习——XGboost模型
  19. Unreal Engin_画廊制作笔记 _010给墙画添加灯光
  20. 用NetCDF创建和读取NC文件

热门文章

  1. 怎么把原本一页的PDF拆分成单独的两页?
  2. Burp suite的扫描模块
  3. 重磅:国家基金委八大学部公布“优先发展领域及主要研究方向”
  4. 2022-2028全球智能门锁系统行业调研及趋势分析报告
  5. 计算机桌面的图标都可以删除吗,桌面上图标删除不了怎么回事,电脑桌面的图标删除不了...
  6. 各种前端框架的下拉菜单收集
  7. 关于Single Image Super Resolution(单幅影像超分辨率重建任务)Bicubic_LRX4影像生成的‘搬运‘想法
  8. 计算机word文档技巧,Word文档操作技巧:同时打开多个文档3种方法-word技巧-电脑技巧收藏家...
  9. 机场精细化管理_王晓鸿:BIM技术在机场工程精细化管理的应用
  10. Arduino+WZ指令+Onenet