圆形的生成

圆形的生成

  • 圆形的扫描转换
  • 中点画圆
  • Bresenham画圆

圆形的扫描转换

在屏幕像素点阵中确定一组最佳逼近于圆的像素点,并用指定的颜色显示出来。
由于圆具有对称性,在进行扫描转换时,只需迭代生成八分之一圆的最佳像素逼近点,圆的其他部分通过简单的坐标对称就可以直接得到。
在这里插入图片描述

中点画圆

void MIDPOINT_Circle(CDC *pDc,CPoint cPt ,int R,COLORREF crColor)
{int x,y,d;x=0;y=R;d=5-4*R;pDc->SetPixel(cPt.x+x,cPt.y+y,crColor);pDc->SetPixel(cPt.x+x,cPt.y-y,crColor);pDc->SetPixel(cPt.x+y,cPt.y+x,crColor);pDc->SetPixel(cPt.x-y,cPt.y+x,crColor);while(x<=y){if (d>=0){x+=1;y-=1;d+=8*(x-y)+20;}else{x+=1;d+=8*x+12;}pDc->SetPixel(cPt.x+x,cPt.y+y,crColor);pDc->SetPixel(cPt.x+x,cPt.y-y,crColor);pDc->SetPixel(cPt.x-x,cPt.y+y,crColor);pDc->SetPixel(cPt.x-x,cPt.y-y,crColor);pDc->SetPixel(cPt.x+y,cPt.y+x,crColor);pDc->SetPixel(cPt.x-y,cPt.y+x,crColor);pDc->SetPixel(cPt.x+y,cPt.y-x,crColor);pDc->SetPixel(cPt.x-y,cPt.y-x,crColor);}}

Bresenham画圆

void Bresenham_Circle(CDC *pDc,CPoint cPt ,int R,COLORREF crColor)
{int x,y,p;x=0;y=R;p=3-2*R;pDc->SetPixel(cPt.x+x,cPt.y+y,crColor);pDc->SetPixel(cPt.x+x,cPt.y-y,crColor);pDc->SetPixel(cPt.x+y,cPt.y+x,crColor);pDc->SetPixel(cPt.x-y,cPt.y+x,crColor);while(x<=y){if (p>=0){x+=1;y-=1;p+=4*(x-y)+10;}else{x+=1;p+=4*x+6;}pDc->SetPixel(cPt.x+x,cPt.y+y,crColor);pDc->SetPixel(cPt.x+x,cPt.y-y,crColor);pDc->SetPixel(cPt.x-x,cPt.y+y,crColor);pDc->SetPixel(cPt.x-x,cPt.y-y,crColor);pDc->SetPixel(cPt.x+y,cPt.y+x,crColor);pDc->SetPixel(cPt.x-y,cPt.y+x,crColor);pDc->SetPixel(cPt.x+y,cPt.y-x,crColor);pDc->SetPixel(cPt.x-y,cPt.y-x,crColor);}
}

结果显示
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1382480.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

生成圆形Image

目标任务&#xff1a;实现一个圆形面片的Image&#xff0c;实现效果如下&#xff1a; 为什么要实现这个东西呢&#xff0c;其实原先在做这种圆形效果的时候都是在用Mask实现的&#xff08;相信很多都是这样的~&#xff08;罒ω罒&#xff09;&#xff09;&#xff0c;但是最近了…

圆形图形logo案例2

注意共有3个步骤&#xff0c;按顺序操作下去 1.用矩形绘画两个圆&#xff0c;然后使用路径查找器分割. 2.绘制长方形&#xff0c;把所有长方形使用路径查找器、联集 3.用这些长方形与两个圆相交的部分进行分割&#xff0c;然后取消分组&#xff0c;把多余的地方去掉&#xff0…

html5绘制圆形,Canvas绘制圆形

使用canvas绘制圆形步骤: 1、在页面中创建canvas的节点(相当于创建一个画板)&#xff0c;设置CSS样式。(注意&#xff1a;要在行内样式中设置canvas的宽高。) 2、在JS中获取节点&#xff0c;并获取画板(绘画环境)、设置画笔颜色。 var canvasdocument.getElementById(canvas); …

圆形图形logo案例3

注意共有3个步骤&#xff0c;按顺序操作下去 1.用矩形工具绘制基础图形. 2.绘制LOGO中间的图形&#xff0c;用路径查找器的“减去顶层”功能. 3.绘制圆形路径&#xff0c;用描点工具剪裁路径&#xff0c;然后在路径上写上字母&#xff0c;完成. 这就是我简单快速的方法&#…

java圆形矩形直线文字设计图_如何设计圆形文字logo?怎么让文字按圆形走?圆形文字logo...

美好的周末说过去一下子就过去了呢~今天又迎来了更加美好的周一哇&#xff0c;哈哈哈。好啦废话不多说&#xff0c;还是来看看今天的教程方案吧&#xff01;圆形文字logo是什么意思呢&#xff1f;不知道大家有没有看到过那种圆形的标志&#xff0c;比如小编大学时候&#xff0c…

圆形图形logo案例

注意共有2个步骤&#xff0c;按顺序操作下去 1.先用图形矩形绘制轮廓&#xff0c;最上面画一个椭圆形&#xff0c;ctrlc复制&#xff0c;ctrlf原地粘贴 2&#xff0c;两个描边图层一起进行效果&#xff0c;从上面开始做起&#xff0c;第一个两个图形选中后使用减去后方对使用的…

设计模式之简单工厂模式

一、概述 定义一个用于创建对象的接口&#xff0c;让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。 简单工厂模式&#xff1a;又叫做静态工厂方法模式&#xff0c;是由一个工厂对象决定创建出哪一种产品类的实例。 二、适用性 1.当一个类不知道它所…

【LeetCode 75】第二十六题(394)字符串解码

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码运行结果&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 给我们字符串&#xff0c;让我们解码&#xff0c;那么该怎么解码呢&#xff0c;被括号【】包裹起来的字符串需要扩展成括号左边第…

2023最新python学习方法总结!(内部机密)

不要再问我python好不好学了 我之前做过半年少儿编程老师&#xff0c;一个小学四年级的小孩子都能在我的教学下独立完成python游戏&#xff0c;植物大战僵尸简单版&#xff0c;如果要肯花时间&#xff0c;接下来的网络开发也不是问题&#xff0c;人工智能也可以学个调包也没啥问…

【Python机器学习】实验10 支持向量机

文章目录 支持向量机实例1 线性可分的支持向量机1.1 数据读取1.2 准备训练数据1.3 实例化线性支持向量机1.4 可视化分析 实例2 核支持向量机2.1 读取数据集2.2 定义高斯核函数2.3 创建非线性的支持向量机2.4 可视化样本类别 实例3 如何选择最优的C和gamma3.1 读取数据3.2 利用数…

MySQL出现(2003)错误的解决方法(三种思路)

MYSQL的2003错误代码是:"cant connection to mysql server on ‘IP’" 意思为:"无法连接到“IP”上的 mysql 服务器". 我下列描述的问题中,第一种和第三种是以虚拟机连接MYSQL的2003方法; 而第二种是用的typora-setup-x64在本机中使用构建MYSQL服务的方…

Java集合框架面试题总结及解析

文章目录 说出 collection 的常用子接口&#xff1f;说出 3 个以上的常 用方法&#xff1f;都有什么作用&#xff1f;如果向 TreeSet 中加入类对象&#xff0c;需要做什么&#xff1f;Set 里的元素是不能重复的&#xff0c;那么用什么方法来区分重复与否呢? 是用还是 equals()…

【2022最新Java面试宝典】—— Java集合面试题(52道含答案)

目录 一、集合容器概述1. 什么是集合2. 集合的特点3. 集合和数组的区别4. 使用集合框架的好处5. 常用的集合类有哪些&#xff1f;6. List&#xff0c;Set&#xff0c;Map三者的区别&#xff1f;7. 集合框架底层数据结构8. 哪些集合类是线程安全的&#xff1f;9. Java集合的快速…

关于集合的面试题

一、集合与数组 数组&#xff08;可以存储基本数据类型&#xff09;是用来存现对象的一种容器&#xff0c;但是数组的长度固定&#xff0c;不适合在对象数量未知的情况下使用。 集合&#xff08;只能存储对象&#xff0c;对象类型可以不一样&#xff09;的长度可变&#xff0…

Java 集合面试题小结(1)

1. 集合和数组的区别 数组是固定长度的&#xff1b;集合可变长度的。数组可以存储基本数据类型&#xff0c;也可以存储引用数据类型&#xff1b;集合只能存储引用数据类型。数组存储的元素必须是同一个数据类型&#xff1b;集合存储的对象可以是不同数据类型。 2. 使用集合框…

Java 集合 相关面试题

1、说说 List, Set, Queue, Map 四者的区别&#xff1f; ⚫ List(对付顺序的好帮手): 存储的元素是有序的、可重复的。 ⚫ Set(注重独一无二的性质): 存储的元素是无序的、不可重复的。 ⚫ Queue(实现排队功能的叫号机): 按特定的排队规则来确定先后顺序&#xff0c;存储…

Java集合面试题汇总大全

每个集合的出现一定是为了解决某种问题的解决方案。 集合流程图 JAVA中集合和数组的区别Collection和Collections的区别ArrayList和LinkedList 和Vector的区别list/set/map的区别HashSet和TreeSet和LinkedHashSet区别HashMap和Hashtable的比较HashMap和ConcurrentHashMap区别H…

50道Java集合经典面试题(收藏版)

前言 来了来了&#xff0c;50道Java集合面试题也来啦~ 已经上传github: https://github.com/whx123/JavaHome 1. Arraylist与LinkedList区别 可以从它们的底层数据结构、效率、开销进行阐述哈 ArrayList是数组的数据结构&#xff0c;LinkedList是链表的数据结构。随机访问的时候…

Java——12个关于Java中集合的面试题

文章目录&#xff1a; 1.请问 ArrayList、HashSet、HashMap 是线程安全的吗&#xff1f;如果不是怎么获取线程安全的集合&#xff1f; 2.ArrayList内部用什么实现的&#xff1f; 2.1 无参构造源码分析 2.2 有参构造源码分析&#xff08;参数为容量&#xff09; 2.3 有参构…

Java面试题总结 - Java集合篇(附答案)

目录 一、Java 容器都有哪些&#xff1f; 二、Collection 和 Collections 有什么区别&#xff1f; 三、list与Set区别 四、HashMap 和 Hashtable 有什么区别&#xff1f; 五、说一下 HashMap 的实现原理&#xff1f; 六、set有哪些实现类&#xff1f; 七、说一下 HashSet…