Labubu很难买?那是因为还没有用Compose来画一个

今天来一篇没有技术含量的,好久没用Compose画画了,想当初自己有事没事就会去draw点东西,主要那会时间也多,上班还能摸会小鱼,但这两年基本没怎么画了,甚至文章都没输出几篇,忙啊,是真忙,一个人干至少两人的活,隔三差五被pua几次,天天琢磨各种人的各种语言艺术,哪有时间搞这些代码艺术,但是现在我有空了,又可以重新拿起这支"画笔"开始画画了,那么画点啥呢?大家都知道最近Labubu非常火,虽然最近人气没之前旺了,但是市场上一个Labubu玩偶依然还要卖个三位数的价格,而且很难买,除非加价从别人或者黄牛手里买,既然难买,咱就来画一个

先画身体

身体还是比较好画的,简单来说就是几个椭圆加上两条贝塞尔曲线,先来画个脑袋

脑袋就用个椭圆表示,绘制椭圆使用drawOval函数,只需要确定好topLeft以及size,这个椭圆就能绘制完成,然后在脑袋的下方继续绘制两个椭圆,这两个椭圆水平排列,中间一部分合并在一起,来表示身体跟脚

现在来看下效果

然后需要画出双手,两只手是斜着向下的,所以没法用任何一个几何图形来表示,只能画两根贝塞尔曲线,这里的贝塞尔是三阶曲线,每根曲线需要找出三个控制点,三个控制点中,首尾的坐标可以参考脑袋topLeft的坐标,稍微做个调整,中间的控制点在首尾控制点的两侧

最终坐标如上所示,效果如下

感觉目前这个Labubu有点太黑了,给它皮肤换个颜色,多来点颜色

创建了一个垂直渐变的Brush对象,然后把drawxxx函数的所有color=Color.Black换成brush=skinColor,这样我们这个Labubu的皮肤就不那么黑了

接下来画耳朵,耳朵是由三个椭圆重叠在一起组成,代码如下

左耳朵外耳的topLeft也是参考脑袋topLeft的坐标,内耳的坐标就是向右偏移一些距离,左耳绘制完毕后,右耳基本一样,将代码拷过来,所有topLeftx坐标加上一些距离,效果如下

再画脸

脸也是一个椭圆,而且要在脑袋的里面偏下一点,要把头顶凸出来,所以脸的topLeft的x,y坐标都要比脑袋的要大

然后是鼻子,鼻子也是由两个三阶贝塞尔曲线构成,曲线的控制点坐标取值如下

两条曲线的首个控制点都是同一个,尾部控制点也是同一个,只有两侧的控制点不同,可以调整两侧控制点的x坐标大小以及尾部控制点y坐标大小来调整鼻子

然后就是两侧的眼睛,先画左眼的眼白,就是一个白色的椭圆,白色的椭圆内部再放个黑色的椭圆来表示眼球

眼球里面再画俩大小不同的小圆点,让眼睛看起来更加有神一些

最后再画上眉骨,Labubu的眉骨比较突出,看起来要立体一些,所以需要一个渐变色来达到这个效果,选取如下颜色

可以看到眉骨依然选择使用椭圆来绘制,效果如下

右眼的代码基本同左眼的一致,只是在x坐标上微调了一下,代码如下

这样两只眼睛的画好了,接下来就是画嘴和牙齿,嘴巴就是个大圆弧,两头基本在Labubu脸的两侧,绘制圆弧使用drawArc函数,它也与绘制椭圆一样也要选取最合适的topLeft的位置,除此之外还要设置开始角度startAngle与弧度sweepAngle,绘制嘴巴的代码如下

最后就是牙齿,Labubu暴露在外面的牙齿一共有九颗,这里打算绘制九个小三角,并且可以沿着嘴巴排列,那么我们绘制三角那肯定也是绘制Path,也就是也要确定好点的坐标,九个牙齿十个点,也就是在圆弧上找到十等分的点,代码如下

pointXpointY是两个计算圆弧上点的函数,代码如下

只需要代入对应的半径,xy坐标以及角度就好,然后牙尖也是同样的计算方式,只是个数变成了九个,半径稍微增加一些

点都有了,这样Path也都可以创建出来了

然后使用drawPath函数把九个三角画出来,当做Labubu的牙齿

仔细观察的话Labubu脸颊两边还有两个腮红,所以最后再给我们这个Labubu画上腮红,使用drawCircle画俩圆

Labubu的最终形态就完成了

最后

一个简陋的Labubu就绘制完成了,希望大家都能买到自己喜欢的Labubu

相关推荐
子兮曰2 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰2 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万2 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝2 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋2 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁2 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王95272 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大2 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师2 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端
沙蒿同学2 天前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端