Unity开发笔记:将Texture2D裁剪出指定圆角用来输出png等图片

学习记录整理,自用,也希望能帮助到有相同需求的人。

圆角原理见大佬的博客:
圆角原理

简单来说就是将图片分成四个区域,找出拐角处的拐子的设置为透明

!\[\](https://img-blog.csdnimg.cn/a788825545614816895a9cca42ddc4a9.png

如图,找到四个红色区域外边的白色区域 设置为透明即可。

注意texture本身应该为支持透明的格式如TextureFormat.RGBA32,且导出为png等支持透明的格式(比如jpg不支持透明)。

函数代码:

csharp 复制代码
    void myBorder(Texture2D texture, float radius)
    {
        Vector2 a = new Vector2(0f, 0f);
        Vector2 b = new Vector2(0.5f - radius, 0.5f - radius);
        for (float i = 0; i < texture.width; ++i)
        {
            for (float j = 0; j < texture.height; ++j)
            {
                a.x = Math.Abs((i - texture.width / 2) / texture.width);
                a.y = Math.Abs((j - texture.height / 2) / texture.height);
                //(Vector2.Distance(a, b) > radius && a.x :去除中间十字形区域
                //a.x > (0.5f - radius) && a.y > (0.5f - radius)去除十字形区域间的四个圆角
                if (Vector2.Distance(a, b) > radius && a.x > (0.5f - radius) && a.y > (0.5f - radius))
                {
                    //剩下的就是要设置透明的区域
                    texture.SetPixel((int)i, (int)j, Color.clear);
                }
            }
        }
    }

上述代码中Radius为圆角参数,区间为0,0.5,数值越大圆角越大

一个简单的调用实例:

csharp 复制代码
        // 创建一个新的 Texture2D 来保存截屏数据
        Texture2D uiTexture = new Texture2D((int)width, (int)height, TextureFormat.RGBA32, false);
        uiTexture.ReadPixels(new Rect(0, 0, width, height), 0, 0);
        myBorder(uiTexture, 0.065f);

        // 将 Texture2D 保存为图片文件
        byte[] imageBytes = uiTexture.EncodeToPNG();
        string path = "Assets/Textures/UI/20230803/4.png"; 
相关推荐
兰亭妙微UI设计公司42 分钟前
兰亭妙微界面设计公司分享:如何高效改善设计质量|实战分析
ui
且随疾风前行.3 小时前
UI核心 - 绘制流程(测量、布局、绘制)
ui·dubbo
ndsc_d6 小时前
2026年有哪些好用的AI UI设计工具?主流工具功能和适用场景对比
前端·人工智能·ui·ai·设计师·ai ui·ai ui工具
DM今天肝到几点?6 小时前
OpenAI 向全量用户开放 GPT-6 与 Intelligent UI:聊天框正在变成工作台
gpt·ui·chatgpt
FII工业富联科技服务1 天前
Intelligent UI重构工业软件交互:从固定界面到动态生成式交互
人工智能·ui·重构
FII工业富联科技服务1 天前
从大模型到自主运营:Intelligent UI如何成为工业AI的新入口
人工智能·ui
qq_252959971 天前
ChatGPT突然长出“可操作界面”:GPT-6 Intelligent UI让答案变成计算器、地图和小游戏
gpt·ui·chatgpt
兰亭妙微UI设计公司1 天前
兰亭妙微ui设计公司分享:从零搭建网站设计:3 个核心维度,少走设计弯路
ui
Cx330❀2 天前
Qt 多线程深度解析:从底层原理到 UI 线程与同步实战
开发语言·qt·ui·搜索引擎·性能优化·图形渲染
传奇开心果编程2 天前
【声明式UI实用开发技术学与练】第5课 表单处理:受控与非受控
ui·移动开发·开发范式·编程框架·声明式ui