unity 使用超椭圆方程对图片进行裁切制作圆角矩形
今天无意间在网上发现了一个公式,叫做超椭圆方程,效果就是圆角矩形:
原文地址:
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 使用超椭圆方程对图片进行裁切制作圆角矩形相关推荐
- canvas 圆角矩形填充_canvas制作圆角矩形(包括填充矩形的功能)
canvas制作圆角矩形(包括填充矩形的功能) 您的浏览器不支持 HTML5 canvas 标签. window.onload = function() { var myCanvas = docume ...
- PS 如何制作 圆角矩形 图片
一.制作圆角图片 运行Photoshop CS3,打开一张图用来制作圆角图片. 选择圆角矩形工具 在圆角矩形工具中选择路径选项 圆角矩形的半径,可以设置为20-30 在图片中拉出圆角 在右下角的图层面 ...
- PS如何制作圆角矩形图片
一.制作圆角图片 运行Photoshop CS3,打开一张图用来制作圆角图片. 选择圆角矩形工具 在圆角矩形工具中选择路径选项 圆角矩形的半径,可以设置为20-30 在图片中拉出圆角 在右下角的图层面 ...
- android开源项目---RoundedImageView制作圆角矩形,椭圆形以其圆形控件
一.项目概述 在项目中美工提供给我们的图片通常是矩形的,我们如何把矩形的图片做成圆角矩形.椭圆形以其圆形效果的图形显示效果,这就是我这篇文章要讲的内容. 效果如下: 我这里使用的是开源项目 Roun ...
- css制作圆角矩形,CSS绘制圆角矩形图形的效果
我们在给矩形的四角进行圆角处理时,我们早期,都是采用片图来完成,这无疑是给网页的加载增加了负担,大量的图片载入在网页里,流量消耗,对手机用户是一刺痛的.给网页及APP的加载速度,无疑是我们一直研究的方 ...
- photoshop轻松制作清晰圆角矩形的描边
转自:http://goodboy5264.blog.163.com/blog/static/25382982009931102654887/ 看标题大家不知道是否明白,不明白的看下效果图,有经验的设 ...
- 使用canvas对图片进行裁切
canvas canvas 又叫做画布,是 HTML5 新增内容,可以使用js脚本在其中绘制图像的元素. 常用于制作网页上的一些毕竟炫酷的前端特效. 可以完成图片处理.动画渲染.图表渲染等操作. 最近 ...
- 【Unity3D基础教程】给初学者看的Unity教程(四):通过制作Flappy Bird了解Native 2D中的RigidBody2D和Collider2D...
作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 引子 在第一篇文章[Unity3D基础教程] ...
- 计算机应用技术自创ppt,教师必备:超好用的课件制作工具
原标题:教师必备:超好用的课件制作工具 随着计算机的普及和网络建设的飞速发展,以计算机为核心的多媒体辅助教学广泛应用于教育,多媒体课件的开发.利用正越来越被广大学校和教师所重视,越来越多的领域应用到多 ...
最新文章
- Spring Boot 前后端配合及接口化测试学习记录[3]
- 三、CSS重要的盒子模型知识总结(中篇)
- libhiredis.so.0.13: cannot open shared object file: No such file or directory in Unknown on line
- 安卓案例:初试谷歌图表
- baidu 地图 鼠标移上显示标签 鼠标离开隐藏标签
- YANG-SUITE安装步骤
- IP 地址、网络号和主机号、ABC三类、ip地址可分配问题、子网掩码、子网划分
- SVG霍比特人电影标题样式
- MySQL——创建表
- Open For Bussiness (HelloWorld)
- Luogu5405 CTS2019氪金手游(容斥原理+树形dp)
- 陈艾盐:春燕百集访谈节目第二十一集
- Node.js 删除本地文件/文件夹
- 计蒜客 T1853:非常男女(前缀和)
- java warmup,20. dubbo源码-预热warmup过程
- linux如何添加360网站卫士ip,使用加速乐、360网站卫士PHP无法获取用户IP的解决方法...
- cypress 自动化测试
- 10个常用的软件测试工具,你不容错过
- U盘格式为RAW格式,空间为0字节的解决办法
- Asp.net Ajax Control Toolkit设计编程备忘录(色眼窥观版)——第4回(忍者专辑)
热门文章
- 基于Jeecgboot前后端分离的流程管理平台演示系统安装(二)
- 拼多多2018年校招真题
- Windows Server 2012 如何实现多个用户远程桌面登陆?
- java 判断cmyk_JAI ImageIO的纯Java替代品,用于检测CMYK图像
- 前嗅百科 | 这10个科学常识竟然都不是真的?
- 小米平板4 android版本,小米平板4-4plus
- 键盘移动小div(js原生)
- antd中table组件中如何进行换行操作(react中)
- 从零开始学C++之标准库类型(一):string 类简介和例程
- opencv(python)使用ann神经网络识别手写数字