扇形的绘制

用到的函数Pie()
代码部分
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);

CPoint d1, tr, sp, ep;
d1 = CPoint(-400, -600), tr = CPoint(400, 200);
sp = CPoint(400, 0), ep = CPoint(-400, 0);
pDC->Pie(CRect(d1, tr), sp, ep);

d1 = CPoint(-80, -280), tr = CPoint(80, -120);
sp = CPoint(400, 0), ep = CPoint(-400, 0);
pDC->Pie(CRect(d1, tr), sp, ep);
参数的的作用是确定扇形的扇心和它的弧线的起点和终点,这里的起点和终点注意下:下面是有关起点和终点的讲解。
扇形的外接矩形CRect,即扇形在这个矩形内,当sp,ep的坐标点不在矩形内时,取扇形中心和sp,ep的连线与矩形行边相交的点作为sp,ep;如上,第二个矩形的中心和第一个矩形中心相重合,而定义它的sp,ep很麻烦,但是知道它的sp,ep点在第一个扇形的相应边上,所以直接使用相同的sp,ep。
如果将第二个扇形的起点和终点换成下面的,可得到相同的结果
d1 = CPoint(-80, -280), tr = CPoint(80, -120);
sp = CPoint(800, 200), ep = CPoint(-800, 200);
pDC->Pie(CRect(d1, tr), sp, ep);
绘制图形需要将图形放在坐标系中,得到相关点的位置信息,才能够得到相应的图形;有时,你想要的点可能并不好得到或是快速得到,那么可以间接性的点替代它,如上。

时间: 2024-10-25 17:05:03

扇形的绘制的相关文章

利用构造函数对canvas里面矩形与扇形的绘制进行一个封装

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>封装矩形构造函数,扇形构造函数</title> <style> canvas{ border: 1px solid green; } </style></head><body> <!-- 封装矩形构造函数,扇

绘制扇形效果线条小Bug解决

绘制线条基本代码: 变量: CPoint m_ptOrigin;//起点坐标 bool m_bTrue;//检查鼠标左键是否按下 CPoint m_ptOldOrigin;//记录上一次绘制终点坐标,用于绘制边界线 初始化: m_ptOrigin = 0; m_bTrue = false; m_ptOldOrigin = 0; 代码实现: void CDrawView::OnLButtonDown(UINT nFlags, CPoint point){ // TODO: Add your mes

绘制视图

1.三个可进行绘制的方法: 在自定义视图中,有三个函数可以重写用于界面绘制,在视图创建过程中,三个函数的执行顺序依次是:onLayout.onDraw.dispatchDraw. 1.onLayout(boolean changed, int left, int top, int right, int bottom) :  onLayout用于定位该视图在上级视图中的位置,从其参数中就可以看出来.由于该函数没有画布,因此只适合绘制现成的视图控件. 2.onDraw(Canvas canvas)

C#中的GDI+图形绘制方法

GDI+图形绘制方法 1.首先对于绘制图形,必须的先将命名空间导入:using System.Drawing.Drawing2D; 2.然后在一个事件中写入程序 首先先将Graphics这个对象实例化: 然后就是实例化笔(pen)或者刷子(brush): 对于笔的实例化Pen mypen = new Pen(Color(选择颜色),笔的线条粗度) 刷子的实例化 solidbrush:它的实例化只需要指定color属性值就可以了: hatchbrush:它的实例化需要指定所需要绘制的图形以及颜色:

Android自定义View——仿vivo i管家病毒扫描动画效果

技术是永无止境的,如果真的爱技术,那就勇敢的坚持下去.我很喜欢这句话,当我在遇到问题的时候.当我觉得代码枯燥的时候,我就会问自己,到底是不是真的热爱技术,这个时候,我心里总是起着波澜,我的答案是肯定的,我深深的爱着这门技术. 今天我们继续聊聊Android的自定义View系列.先看看效果吧: 这个是我手机杀毒软件的一个动画效果,类似于雷达搜索,所以用途还是很广泛的,特别是先了解一下这里的具体逻辑和写法,对技术的进步一定很有用. 先简单的分析一下这里的元素,主要有四个圆.一个扇形.还有八条虚线.当

iOS Quartz2D画图

对于刚接触Quartz2D的同学来说,先了解 上下文 的概念,再从最基础的画线来具体体验Quartz2D的画图步骤 介绍Quart2D :是苹果官方的二维(平面)绘图引擎,同时支持iOS和macOS系统,它的API是纯C语言的,它可以绘制图形.绘制文字.绘制图片.截图.自定义UI控件 在iOS开发中,Quartz2D最常用来自定义UI控件. Quartz2D画图步骤: 1:获取图形上下文对象 2 向图形上下文对象中添加路径,绘图属性等等 3 渲染(把图形上下文中的路径绘制到对应的输出设备上) 介

Canvas--2

Canvas2(关键词:setLineDash .rect .strokeRect .clearRect .arc.sin .strokeText ) 绘制其他样式: lineCap 结束端点的设置 lineCap  = "butt"  默认线冒 lineCap  = "round" 圆形线冒 lineCap  =  "aquare"正方形线冒 lineJoin 创建拐角类型 bevel:创建斜角 round:创建圆角 miter:默认,创建尖角

Canvas画图之中级篇

前段时间介绍了canvas画图的初级篇,今天接着介绍中级篇了... 一.绘制形状 绘制图形不仅仅是利用线条来实现绘图, 还可以有快捷的绘制图形的办法 1.绘制矩形 2.绘制圆弧 1 绘制矩形 绘制矩形的方法 CanvasRenderingContext2D.strokeRect CanvasRenderingContext2D.fillRect CanvasRenderingContext2D.rect 注意: rect 方法就是矩形路径, 还需要使用 fill 或 stroke 才可以看到效果

GossipView:圆圈布局的自定义view

当我们想展示一个数组形式的数据的时候,要么是使用列表的形式,要么是使用网格的形式,今天我们介绍一种奇葩的形式,圆圈形式: 注意,周边的扇形是可以点击的.如果使用现有控件,要实现起来是有难度的,所以我们就采用了自定义View的方式. 下面是原理以及使用方法,整个项目可以到这里下载:https://github.com/jianghejie/GossipView 绘制 主要是外部扇形以及内部圆圈背景的绘制,最里面其实还有个很细的圆圈,那个其实是用在当想显示加载效果的时候,但这不是重点略去不讲. 内部