今天无意间在网上发现了一个公式,叫做超椭圆方程,效果就是圆角矩形:

原文地址:

http://blog.csdn.net/tom_221x/article/details/50924154

原文中是使用shader来实现,这里我使用这个公式来尝试直接读取图片文件生成sprite。

步骤

1.读取texture文件

Texture2D tex = (Texture2D)Resources.Load(filepath) as Texture2D;  

2.遍历所有像素点,设置像素的透明度。

先计算出像素点的位置百分比

                float wrate = (float)w / (float)tex.width - 0.5f;float hrate = (float)h / (float)tex.height - 0.5f;

这里减去0.5是为了让图片的中心在(0,0)点的位置

获取当前像素点的颜色

                Color source = tex.GetPixel(w, h);

根据公式计算出当前的透明度值

                float val = Mathf.Pow(Mathf.Abs(wrate / 0.5), 5) +Mathf.Pow(Mathf.Abs(hrate / 0.5), 5);

设置透明度

source.a = 1 - Mathf.Clamp(val, 0, 1);

此公式计算出的值可以理解为当前像素点距离图片中心的距离,所以为了使边缘透明,需要用1减去当前的值

最后生成sprite

        tex.Apply();Sprite pic = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f));sr.sprite = pic;

sr为我们创建的精灵

看下效果:

这里我们不想要透明渐变的效果,所以在设置透明度那里做一个向下取整的操作

source.a = 1- Mathf.Floor(Mathf.Clamp(val, 0, 1)) ;

这下就没有半透明效果了

接下来我们声明2个变量,并替换公式中的2个值:

    [SerializeField,Range(0,1)]public float camber = 0.5f;private float lastCamber = 0.5f;[SerializeField, Range(0, 10)]public float radius = 5f;private float lastradius = 5f;
                float val = Mathf.Pow(Mathf.Abs(wrate / camber), radius) +Mathf.Pow(Mathf.Abs(hrate / camber), radius);

这样我们就可以方便的调节圆角的范围了:

unity 使用超椭圆方程对图片进行裁切制作圆角矩形相关推荐

  1. canvas 圆角矩形填充_canvas制作圆角矩形(包括填充矩形的功能)

    canvas制作圆角矩形(包括填充矩形的功能) 您的浏览器不支持 HTML5 canvas 标签. window.onload = function() { var myCanvas = docume ...

  2. PS 如何制作 圆角矩形 图片

    一.制作圆角图片 运行Photoshop CS3,打开一张图用来制作圆角图片. 选择圆角矩形工具 在圆角矩形工具中选择路径选项 圆角矩形的半径,可以设置为20-30 在图片中拉出圆角 在右下角的图层面 ...

  3. PS如何制作圆角矩形图片

    一.制作圆角图片 运行Photoshop CS3,打开一张图用来制作圆角图片. 选择圆角矩形工具 在圆角矩形工具中选择路径选项 圆角矩形的半径,可以设置为20-30 在图片中拉出圆角 在右下角的图层面 ...

  4. android开源项目---RoundedImageView制作圆角矩形,椭圆形以其圆形控件

    一.项目概述 在项目中美工提供给我们的图片通常是矩形的,我们如何把矩形的图片做成圆角矩形.椭圆形以其圆形效果的图形显示效果,这就是我这篇文章要讲的内容. 效果如下: 我这里使用的是开源项目  Roun ...

  5. css制作圆角矩形,CSS绘制圆角矩形图形的效果

    我们在给矩形的四角进行圆角处理时,我们早期,都是采用片图来完成,这无疑是给网页的加载增加了负担,大量的图片载入在网页里,流量消耗,对手机用户是一刺痛的.给网页及APP的加载速度,无疑是我们一直研究的方 ...

  6. photoshop轻松制作清晰圆角矩形的描边

    转自:http://goodboy5264.blog.163.com/blog/static/25382982009931102654887/ 看标题大家不知道是否明白,不明白的看下效果图,有经验的设 ...

  7. 使用canvas对图片进行裁切

    canvas canvas 又叫做画布,是 HTML5 新增内容,可以使用js脚本在其中绘制图像的元素. 常用于制作网页上的一些毕竟炫酷的前端特效. 可以完成图片处理.动画渲染.图表渲染等操作. 最近 ...

  8. 【Unity3D基础教程】给初学者看的Unity教程(四):通过制作Flappy Bird了解Native 2D中的RigidBody2D和Collider2D...

    作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 引子 在第一篇文章[Unity3D基础教程] ...

  9. 计算机应用技术自创ppt,教师必备:超好用的课件制作工具

    原标题:教师必备:超好用的课件制作工具 随着计算机的普及和网络建设的飞速发展,以计算机为核心的多媒体辅助教学广泛应用于教育,多媒体课件的开发.利用正越来越被广大学校和教师所重视,越来越多的领域应用到多 ...

最新文章

  1. Spring Boot 前后端配合及接口化测试学习记录[3]
  2. 三、CSS重要的盒子模型知识总结(中篇)
  3. libhiredis.so.0.13: cannot open shared object file: No such file or directory in Unknown on line
  4. 安卓案例:初试谷歌图表
  5. baidu 地图 鼠标移上显示标签 鼠标离开隐藏标签
  6. YANG-SUITE安装步骤
  7. IP 地址、网络号和主机号、ABC三类、ip地址可分配问题、子网掩码、子网划分
  8. SVG霍比特人电影标题样式
  9. MySQL——创建表
  10. Open For Bussiness (HelloWorld)
  11. Luogu5405 CTS2019氪金手游(容斥原理+树形dp)
  12. 陈艾盐:春燕百集访谈节目第二十一集
  13. Node.js 删除本地文件/文件夹
  14. 计蒜客 T1853:非常男女(前缀和)
  15. java warmup,20. dubbo源码-预热warmup过程
  16. linux如何添加360网站卫士ip,使用加速乐、360网站卫士PHP无法获取用户IP的解决方法...
  17. cypress 自动化测试
  18. 10个常用的软件测试工具,你不容错过
  19. U盘格式为RAW格式,空间为0字节的解决办法
  20. Asp.net Ajax Control Toolkit设计编程备忘录(色眼窥观版)——第4回(忍者专辑)

热门文章

  1. 基于Jeecgboot前后端分离的流程管理平台演示系统安装(二)
  2. 拼多多2018年校招真题
  3. Windows Server 2012 如何实现多个用户远程桌面登陆?
  4. java 判断cmyk_JAI ImageIO的纯Java替代品,用于检测CMYK图像
  5. 前嗅百科 | 这10个科学常识竟然都不是真的?
  6. 小米平板4 android版本,小米平板4-4plus
  7. 键盘移动小div(js原生)
  8. antd中table组件中如何进行换行操作(react中)
  9. 从零开始学C++之标准库类型(一):string 类简介和例程
  10. opencv(python)使用ann神经网络识别手写数字