“易语言.飞扬”十分钟入门教程

“易语言.飞扬”十分钟入门教程

作者:liigo

2007.1.1

原文链接:http://blog.csdn.net/liigo/archive/2007/01/01/1472077.aspx

转载必须注明出处:http://blog.csdn.net/liigo

 

  • 第 1 分钟:序曲
  • 第 2 分钟:“易语言.飞扬”初相识
  • 第 3 分钟:第一个程序
  • 第 4 分钟:第一个类库
  • 第 5 分钟:猜数字游戏
  • 第 6 分钟:基本语法
  • 第 7 分钟:面向对象
  • 第 8 分钟:特色语法
  • 第 9 分钟:答题时间
  • 第 10 分钟:收工喽

亲爱的朋友,您愿意花十分钟的时间,来了解一门全新的编程语言“易语言.飞扬”吗?

 

第 1 分钟:序曲

只有十分钟,时间紧迫,让我们立刻开始,不多说一句废话(这一句话本身算不算废话?哈哈)。

其实用不着那么紧张,以人均每分钟阅读300字计算,10分钟足以读完3000字。况且我也不打算写那么长,因为还要给亲爱的读者留足思考时间。

本文作为十分钟入门教程,无法面面俱到,只能重点介绍初学者着重关注、关心或感兴趣的部分。本文的主要目的是:让读者在很短的时间内对“易语言.飞扬”有一个大概的了解和感性的认识。如果想获取更深入、更详尽、更权威、更条理、更富逻辑性(或者更抽象、更死板?)的资料,请去拜读易语言官方提供的《“易语言.飞扬”白皮书》——这本书写的很好,文笔比我强多了!本文大量参考该白皮书。

(在本文中,我偶尔会把“易语言.飞扬”说成“飞扬易语言”或“易语言”,总之都是一样东东。)

 

第 2 分钟:“易语言.飞扬”初相识

先通过简单几句话,了解一下飞扬易语言的大概:

  • 完全面向对象,具有类和接口的完整概念(从现在开始忘掉结构化编程吧)
  • 具有自动垃圾回收机制(你只管创建对象,而不必自己释放,轻松多了)
  • 源代码将被编译为本地机器码,程序具有很高的执行效率(当然还是比不上C语言)
  • 同一套源代码,可以被编译为多个操作系统(Windows/Linux/...)下的可执行文件,这是其跨平台机制
  • 可将源代码编译为易语言类库,以达到代码复用。同一个易语言类库可以在多个平台下通用。此外,还可以使用C/C++开发易语言“本地类库”。开发类库非常轻松。
  • 有一个“系统”类库(类似于原易语言中的“核心支持库”)为程序提供最核心支持,是程序运行所必需的,其文件大小只有150K,小巧玲珑。
  • 有一个跨平台的图形用户界面(GUI)类库,基于wxWidgets,目前还不太成熟。
  • 目前各方面的类库都非常缺乏,不过时间会完善一切
  • 将会有一个包括“可视化界面设计”在内的完善的集成开发环境(IDE),其大部分代码将使用飞扬易语言自身编写。(暂时先用文本编辑器写程序吧,呵呵,推荐emEdit,对汉字的语法高亮支持比较好)
  • 飞扬易语言有不少特色语法,如“友好名称(类自然语言编程)”、“三联判断式”、“多返回值”、“双向赋值”、“属性表”等等。

我想有必要再强调一遍:“易语言.飞扬”跟原来的易语言(1.x - 4.x)是完全不同的两个编程语言(如果非要找出相同点话,它们都是易语言公司的产品,作者都是吴涛)。前者在编程理念上要先进许多,是未来发展的趋势;后者在编程资源上更具优势,是已经逐渐成熟的实用产品。

 

第 3 分钟:第一个程序

  
公开 类 启动类
{
    公开 静态 启动()
    {
        控制台.输出行("祖国您好!");
    }
}

请将以上代码存为 hello.ef 文件,注意编码格式必须是Unicode(little endian)。

编译命令行:

ec hello.ef -ecl_name="程序" -starter_cls="启动类" -out_mode=runable -out=hello.exe

以上命令行将编译生成 hello.exe 文件,要执行此程序,请确保易语言系统库文件“系统.ncl”在当前目录下。

hello.exe 的执行结果是在屏幕上输出:祖国您好!

还记得吗?吴涛教给我们的第一个易语言(旧版)程序也是“祖国您好!”。许多人喜欢写的“Hello world”,不过是一句淡淡的问候而已,哪象“祖国您好!”这样饱含深情?中国永远不缺少国际主义者,但我们急需的是民族主义者!

(亲爱的朋友,如果您只有三分钟的时间,现在可以回去工作或休息了。但是我诚挚地邀请您在百忙之中仍然抽出七分钟时间来继续读完本文!) 

 

第 4 分钟:第一个类库

把上面的“第一个程序”的源代码文件拿过来,不做任何改动,就可以把它编译为易语言类库。

编译命令行:

ec hello.ef -out_mode=ecl -ecl_name="liigo"

其中,“-out_mode=ecl”表示编译类库(而不可执行文件), “-ecl_name="liigo"”指定的编译后的类库名称(请您务必把其中的“liigo”替换成您自己的名字,因为这是您编译的第一个易语言类库啊,很有纪念意义呀)。

执行上面的命令行,将编译出类库文件“liigo.ecl”(如果您已经把“liigo”替换为您的名字“张三”,那么生成的文件就是“张三.ecl”)。“.ecl”是易语言类库的固定后缀名,其含义是“Eyuyan Class Library”(易语言类库)。

现在知道了吧,写类库跟写程序一样简单啊。

要使用编译后的类库,需注意两点:1、“引入”该类库;2、确保此类库位于系统环境变量“ECLS_PATHS”所指定的目录中(或位于当前目录中)。

 

第 5 分钟:猜数字游戏

“猜数字”这个小游戏实在是非常非常非常经典。通过这个小小的游戏源代码,我们不仅可以学到飞扬易语言的基本语法(定义类、定义类方法、定义变量、如果、循环、方法调用……),还可以充分领略到面向对象的编程思想。

接下来的三分钟里,我们的主题就是它了!第 5 分钟,请您把它编译成可执行文件(编译方式见下文),自己玩游戏吧;第 6 分钟,我将分别解释其中涉及的飞扬易语言基本语法;第 7 分钟,我将讲解其中的面向对象思想。

公开 类 启动类  //第 1 行
{
    公开 静态 启动()  //第 3 行
    {
        猜数字 猜 = 创建 猜数字();  //第 5 行
        //猜数字 猜 = 创建 全自动猜数字();
        猜.猜();  //第 7 行
    }
}


类 猜数字
{
    私有 整数 内定数字 = 66; //TODO: 随机选择一个数  //第 13 行
    
    公开 猜()
    {
        循环 (猜数字() == 假)  //第 17 行
        {
        }
    }
    
    私有 逻辑 猜数字()
    {
        控制台.输出行("请猜1-100中的一个数:");
        
        整数 数 = 获取数字();
        控制台.输出(数); 
        
        如果(数 == 内定数字)  //第 28 行
        {
            控制台.输出行("猜对了,恭喜!!");
            返回 真;
        }
        
        如果(数 > 内定数字)  //第 34 行
            控制台.输出行("太大了,再来一次。 ");
        否则
            控制台.输出行("太小了,再来一次。 ");
        
        返回 假;  //第 39 行
    }
    
    扩展 整数 获取数字()
    {
        返回 控制台.输入整数();
    }
    
}

类 全自动猜数字 
< 基类 = 猜数字 >   //第 49 行
{
    整数 当前数字 = 0;
    
    扩展 整数 获取数字()
    {
        当前数字++;  //第 55 行
        返回 当前数字;
    }
}

编译方法:将以上代码存为“猜数字.ef”文件(注意编码格式必须是Unicode(little endian)),然后执行以下命令行:
ec 猜数字.ef -ecl_name="程序" -starter_cls="启动类" -out_mode=runable -out=猜数字.exe 

 

第 6 分钟:基本语法

 第 1 行,定义类,“类”“公开”为关键字(注:“公开”“扩展”“私有”“静态”等在白皮书中被称为属性,其实与关键字类似,下面不再明确区分);“//”为注释的开始,直至本行结束(另一种多行注释形式是“/* ... */”)

第 3 行,定义类成员方法“启动()”

第 5 行,定义类型为“猜数字”的变量“猜”,创建类型为“猜数字”的对象,并将创建后的对象赋值给变量“猜”(即变量“猜”引用了该对象)

 第 7 行,调用“猜”(严格的说是“变量‘猜’所引用的对象”)的成员方法“猜()”

第 13 行,定义一个“私有”的、数据类型为“整数”的类成员变量“内定数字”,并指定初始值为66

第 17 行,“循环”语句,只要小括号内的条件(“猜数字()”返回值为“假”)成立,就循环执行花括号中的代码(直至小括号内的条件不成立)

第 28 行,“如果”语句,判断两个变量“数”和“内定数字”的值是否相等,相等则执行后面花括号中的代码

第 34 行,“如果 - 否则”语句,判断变量“数”的值是否大于“内定数字”的值,大于则执行第35行,否则执行第37行

 第 39 行,“返回”语句,结束本方法,并返回相应的值(此处为“假”)

第 49 行,定义一个类“全自动猜数字”,并指定其“基类”是“猜数字”

第 55 行,将变量“当前数字”的值自增1,即在原有值的基础上加1 

 

第 7 分钟:面向对象

现实世界是由万事万物(对象)组成的。在程序中以对象的概念抽象地描述和表达现实世界中的万事万物,这就是面向对象的设计思想。

这里简单讲一下面向对象中的“封装”“继承”和“多态”的概念。

看一下“猜数字”这个类,其数据成员“内定数字”是“私有”的,其方法成员“猜数字()”也是“私有”的,也就是说,它们对外界来说是不可见的,也就是说,它们被严格限制只能在“猜数字”这个类内部使用。既然不能被类外面的代码直接操作,那么这个类就保持了相对的独立性。“获取数字()”这个成员方法是“扩展”的,即它允许外界(子类)有条件的使用。只有成员方法“猜()”是“公开”的,允许界面任意使用。通过“私有”“扩展”“公开”机制,类既对外隐藏了实现细节,同时又对外公开了操作接口。这就是“封装”的概念。

再看“全自动猜数字”这个类,它并没有定义“猜()”这个成员方法,但外界却可以调用它的“猜()”,为什么呢?这是因为“全自动猜数字”的基类是“猜数字”,“猜()”正是从其基类“猜数字”中“继承”而来的。面向对象中“继承”的概念,类似于现实生活中子女继承父辈的财产。子类只能继承基类中“公开”和“扩展”的成员,而不能继承“私有”成员。

“多态”的概念就更复杂一些,更难理解,也更难解释。通俗的说,就是根据对象的类型(而非变量的类型)动态地(程序运行时,而非编译时)决定应该调用的成员方法。多态机制通常依赖于基于继承和覆盖(子类定义“与其父类‘公开或扩展的成员方法’声明形式相同的”成员方法,子类中的方法将覆盖基类中的方法)。

下面根据这几句代码具体讲解一下:

  
  猜数字 猜 = 创建 猜数字();
  //猜数字 猜 = 创建 全自动猜数字();
  猜.猜();

把第二行注释起来仅执行第一行,与把第一行注释起来仅执行第二行,程序有截然不同的运行结果,其中的主要“秘密”就在于多态机制。而在本程序中,多态机制主要体现在“获取数字()”这个成员方法上——它是一个“扩展”方法,可以被覆盖,也已经被覆盖(基类“猜数字”中定义了一个“获取数字()”,子类“全自动猜数字”中也定义了一个“获取数字()”,后者覆盖前者)。程序之所以会出现两个运行结果,也正是因为有两个“获取数字()”,至于哪个“获取数字()”被执行,取决于对象的真实类型(创建时确定,且永不改变):如果对象的类型是“猜数字”(第一行),那么“猜数字.获取数字()”被调用;如果对象的类型是“全自动猜数字”(第二行),那么“全自动猜数字.获取数字()”被调用。您可能还在疑惑,这两个类只有一个“猜()”方法啊,定义于基类“猜数字”中的“猜()”方法能够调用到子类“全自动猜数字”中的“获取数字()”方法吗?可以的,因为子类的“获取数字()”覆盖了基类的“获取数字()”。这是多态的精髓,也是最难理解之处。

面向对象的思想不是很快就可以领会和掌握的,需要细致的品味和长期的实践。面向对象是一门科学,许多人一辈子都在学习。

 

第 8 分钟:特色语法

友好名称——用类自然语言格式书写程序:

如果定义了如下友好名称:

  
友好名称 将<>写到屏幕 = 控制台.输出行(某); 

那么程序可以这么写:

  
  '将123写到屏幕上';
  '将"易语言"写到屏幕上';
  '将
<x>写到屏幕上'(x=100.123);

 三联判断式

可以这么写“如果(0 < x < 10)”,而不必象C/C++,Java,C#那样必需写成“if(x > 0 && x < 10)”。“0 < x < 10”,数学中最通用的写法,多自然呀,为什么其它编程语言就是不支持呢?我想所有程序员学数学都早于学编程,一开始看到怪怪的“x > 0 && x < 10”,必然有此疑问,可是各编程语言设计大师就是对此视而不见!

方法多返回值

定义一个具有多返回值的方法:

  
  文本,整数 取姓名和年龄()
  {
     返回("中国", 5000);
  }

调用以上方法,接收多返回值:

  
文本 姓名; 整数 年龄;
(姓名,年龄) = 取姓名和年龄();

 双向赋值运算符“<=>”——交换两个变量的值:

  
  整数 a = 1, b = 2;
  a 
<=> b; //执行后,a == 2; b == 1;

如果没有双向赋值运算符,大概要写成“c = a; a = b; b = c;”或“a = a + b; b = a - b; a = a - b;”或“a = a ^ b; b = a ^ b; a = a ^ b;”,多麻烦啊。

 

第 9 分钟:答题时间

有了易语言,为什么还要重新搞“易语言.飞扬”?

易语言(旧版)已经渐趋成熟和稳定,进一步改造的空间已经很小了。

“易语言.飞扬”跟原易语言比,有哪些本质改进?

完全面向对象、自动垃圾回收、可自行开发类库、纯文本源代码、多文件工程、与C/C++等语言水乳交融。

已经有很多编程语言了,我们还需要一个全新的编程语言吗?

汇编语言诞生时,C语言诞生时,C++诞生时,Pascal诞生时,Java诞生时,C#诞生时,都会有相同的疑问,答案都是一个:“需要”。 “易语言.飞扬”也一样。

“与C/C++语言等水乳交融”体现在哪里?

可以使用C/C++等语言开发易语言本地类库,和易语言自身开发的类库完全等效,可相互引用,融合互补。

“易语言.飞扬”在哪些方面跟Java比较相似?

语法方面基本照抄;面向对象方面基本照抄;都有自动垃圾回收机制;都有“引用”的概念,都没有“指针”的概念;都可以跨平台;都有自已的类库;都支持Unicode、多线程、类反射;都有类似“Class Path”“Java Doc”“JNI”等东东……

为什么跟Java这么像?

语法方面没得说,两者都抄C语言;其它方面,我觉得“易语言.飞扬”向目前最先进的编程理念靠拢是正常的,也是合理的。

哪些方面跟Java不同?

编译型语言,直接执行机器码,运行效率高(Java是由JVM解释执行字节码,配合JIT);最精巧的运行时环境(Runtime Environment),连同核心类库仅150K;以“类库”而非“包(package)”为单位引入(import);最源代码文件的路径没有严格要求(Java要求源文件必须位于特定子目录中);不限制一个源代码文件只能写一个公开类;类的构造方法固定为“初始化()”,析构方法固定为“清理()”(Java类的构造方法名称与类名称相同,没有析构函数);类库不仅可以用“易语言.飞扬”自身开发,还可以使用其它编程语言(如汇编,C/C++,Delphi)开发;暂时不支持异常处理机制;前面提到的特色语法;

垃圾收集器(GC)的质量和效率如何?

尚未经过实践检验,不好说。根据我个人不严格测试,在10000个对象相互引用且存在大量的循环引用的情况下,垃圾收集器工作正常,平均每次回收动作约耗时20毫秒。GC工作期间好像会中断程序执行。每次回收间隔约6到10秒,应该可调。具体的垃圾收集算法不详。

现在有多少类库可用?

从易语言公司提供的测试版中的示例代码中,涉及到了三个类库“系统.ncl”“用户界面.ncl”“工具.ncl”,但并未同时公开类库接口。故可以认为目前没有可供使用的类库。根据我个人理解,这次发布测试版主要目的是测试基本语法和编译器,而不是类库。

 

第 10 分钟:收工喽

我突然意识到文章写的有点长了,您读到这里也许已用完20分钟?对此我表示抱歉。但是请不要抱怨,因为我花费在此文中的时间远不止20小时!

我希望您读完本文能有所收获,多谢您的宝贵时间。

向我们中国的IT精英吴涛高级总工程师致敬,向他领导的易语言开发团队致敬!

 

参考资料:

 大连大有吴涛易语言软件开发有限公司网站:http://dywt.com.cn

易语言官方论坛:http://dywt.com.cn/vbs/

“易语言.飞扬”1.0测试版下载地址:http://www.dywt.com.cn/edown/efly/efly.rar,http://dywt.com.cn/vbs/dispbbs.asp?boardID=148&ID=100124&page=1

《“易语言.飞扬”白皮书 1.0》在线地址:

HTML:
http://liigo.diy.myrice.com/efly/whitebook/index.html
http://www.21111.cn/efy/index.html
http://www.21111.eb.cn/efy/index.html
http://e-soscn.s103.72dns.com/efly%5Fbook/
http://aneng.go3.icpcn.com/efy/index.html

PDF:
http://liigo.diy.myrice.com/efly/whitebook/white_book.pdf
http://www.21111.cn/efy/white_book.pdf
http://www.21111.eb.cn/efy/white_book.pdf


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

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

相关文章

《MYSQL必知必会》读书笔记1

目录 行 主键 MYSQL工具 使用MYSQL 连接 检索数据 检索&#xff08;SELECT&#xff09; 限制结果&#xff08;LIMIT&#xff09; 排序检索&#xff08;ORDER BY&#xff09; 过滤数据&#xff08;WHERE&#xff09; 过滤数据&#xff08;AND、OR&#xff09; 通配符…

【SpringCloud】SpringAMQP

文章目录 1、AMQP2、基本消息模型队列3、WorkQueue模型4、发布订阅模型5、发布订阅-Fanout Exchange6、发布订阅-DirectExchange7、发布订阅-TopicExchange 1、AMQP Advanced Message Queuing Protocol&#xff0c;高级消息队列协议。是用于在应用程序之间传递业务消息的开放标…

黑马Redis视频教程实战篇(一)

目录 一、短信登录 1.1、导入黑马点评项目 &#xff08;1&#xff09;导入黑马点评sql脚本 &#xff08;2&#xff09;导入后端项目 &#xff08;3&#xff09;导入前端项目 1.2、基于Session实现登录流程 1.3 、实现发送短信验证码功能 1.4 、实现登录拦截功能 1.5 、隐…

创建第一个.NET MAUI应用

1.打开VS2022,创建新项目,并选择.NET MAUI应用,然后点击下一步 2.输入项目相关配置,然后点击下一步 3. 选择框架版本,然后点击创建 4.项目创建成功后会自动打开概述页 5.平台框架切换 6.启动应用,如有下图提示,启动开发者模式 成功启动应用 7.修改应用 修改MainPage.xml如下图…

阿里直播平台面临的技术挑战

大流量、高并发场景下&#xff0c;大型直播的技术挑战一般体现在如下几个方面&#xff1a; 视频流的处理、分发 播放质量保障 视频可用性监控 超大直播间实时弹幕及聊天互动 高性能消息通道 内容控制&#xff0c;如算法鉴黄、文本过滤 系统可用性、稳定性保障 本文将针对其中的…

龙珠直播php,斗鱼、全民TV、龙珠等直播平台排行榜 看视频直播发展趋势

从2015年下半年起&#xff0c;视频直播市场便显露出了火爆之势。除了越来越多的人喜欢观看、愿意参与直播之外&#xff0c;直播类 App也如雨后春笋般不断涌出。 而2016年&#xff0c;视频直播领域更是出现了火爆场面&#xff0c;尤其是刚刚过去的一个月&#xff1a;先是卷土重来…

短视频和直播,哪个会火得更久呢

短视频和直播&#xff0c;哪个会火得更久呢 曾经&#xff0c;电视剧和综艺节目是人们在工作之余放松的主要方式&#xff0c;目前越来越多的电视剧和网剧依靠着当红明星、大 IP 能够在前期获得大量的热度&#xff0c;但在播出之后收视率往往不理想。随着时间的增长&#xff0c;…

怎么创建直播平台

现在直播应用非常火爆&#xff0c;它以生动直观的方式向用户传达最真实的现场信息&#xff0c;受到广大用户的普遍欢迎。小编作为一名技术人员&#xff0c;经常开发各种直播平台&#xff0c;&#xff08;娱乐直播、游戏直播、教育直播、财经直播等&#xff09;下面我把自己积累…

关于linux的ssh(出现的问题以及ubuntu的ssh配置和ssh连接超时问题)

目录 Ubuntu进行ssh连接 关于ssh报错排错 备注&#xff1a;防火墙和selinux可能对ssh连接存在限制&#xff0c;但是我在操作的时候并没对我照成影响 查看selinux状态 ssh_config和sshd_config的区别 Ubuntu进行ssh连接 1.首先需要安装SSH服务器&#xff0c;在ubuntu终端输…

matlab机器人画圆轨迹规划

在这里插入图片描述 function Untitled()clear;clc; L(1)Link([0 0.15055 0 pi/2]); L(2)Link([0 -0.115 0.246 0]); L(3)Link([0 0.1163 0.190 0]); L(4)Link([0 -0.1175 0 pi/2]); L(5)Link([0 0.1175 0 -pi/2]); L(6)Link([0 0.105 0 0]);ZU3SerialLink(L,name,JAKA Z…

Ps制造图标

&#xff08;作者&#xff1a;翟正兴&#xff0c;撰写时间&#xff1a;2019年6月17日&#xff09; 首先我们打开ps新建一个文档 &#xff0c;然后在文档里面用椭圆工具画一个圆出来&#xff0c;画圆的时候把填充禁掉&#xff0c;把描边大小调成30像素首先我们打开ps新建一个文档…

怎么用PS软件图层样式制作图标

1. 2.圆角60px 3. 4.添加图层样式【渐变叠加】 5. 添加【斜面和浮雕】 6. 7.再画一个圆角矩形并添加【图层样式】【渐变叠加】【描边】 8.画圆再次添加【图层样式】【渐变叠加】【内阴影】 9.画圆形并填充黑色【图层样式】【描边】 10. 11.复制圆形最后得到效果图 编辑&#xf…

chatgpt赋能python:Python中最大公约数的函数介绍

Python中最大公约数的函数介绍 在数学中&#xff0c;最大公约数&#xff08;GCD&#xff09;是两个或多个整数的最大公约数。 Python是一种高级编程语言&#xff0c;具有内置的GCD函数。在本篇文章中&#xff0c;我们将介绍Python中的最大公约数函数&#xff0c;以及如何使用它…

Python OpenCV画圆

Python OpenCV画圆 PS: 也是从网上各个帖子中学习的Python&#xff0c;因此代码的格式以及内容有粘贴网上其他大神的代码&#xff0c;如有侵权请告知删除 在图片中检测圆&#xff0c;并进行标注 #!/usr/bin/python # -*- coding: UTF-8 -*-import cv2# 加载图片 img cv2.im…

PS-切图

ps学习 1.改设置 新建ctrN &#xff0c;网页默认选web大小宽度1920 移动工具:设置选择图层 选择自动选择或者按Ctrl鼠标左键可选中 视图&#xff1a;勾标尺显示智能参考线 关掉一些窗口&#xff0c;只留下图层、历史、信息、字符 改信息窗口的面板选项&#xff1a; 改编辑…

C语言画圆(详细解释易懂)

代码 #include<iostream> #include<cmath> using namespace std; int main() { for(double y10;y>-10;y-1){for(int i0;i<10;i) cout<<" ";double x2.5*(10-sqrt(100-y*y)),t;for(t0;t<x;t1) cout<<" ";cout<<…

中点画圆算法----计算机图形学

圆的对称特性&#xff1a; 一个八分圆上的点可以映射为其余七个八分圆的点 利用圆的对称性可以减少计算量&#xff0c;只需要计算出一个八分之一圆上需要画的点&#xff0c;就可以映射出整个圆 中点画圆算法&#xff1a; &#xff08;对于原点为(xc,yc)的圆&#xff0c;假定圆…

Android 自定义View 画圆(奥运五环)

效果图 前言 你会画画吗&#xff1f;你会写代码吗&#xff1f;你会用代码画画吗&#xff1f; 正文 自定义View&#xff0c;实际开发过程中&#xff0c;因为涉及用户体验的时候&#xff0c;UI通常会弄一些骚操作出来&#xff0c;这个时候就有两个选择&#xff0c;你是用GIF…

PS小知识(三)——画圆滑线及虚线

一&#xff1a;画一个圆滑线 1、利用“套索工具”沿着地物画一个圈&#xff1b;或者利用“磁性套索工具”画圈&#xff08;这个的特点是可以大致按照不同的颜色自动追踪&#xff09;。 2、右击进行“描边” 3、进行下面的“平滑”操作 二&#xff1a;画一个圆滑且各段等长的…

html画布里面画圆,html5 canvas 画布画圆

什么是 Canvas? HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。javascript 画布是一个矩形区域,您能够控制其每一像素。css canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。html 浏览器支持 Internet Explorer 9+, Firefox, Opera, Chrome 以及 Sa…