SDL实现九宫格纹理绘制,使其不变形

九宫格绘制的纹理适用于UI以及那些宽高需要通过不同比例缩放的图片资源。为了节省空间,一般的UI资源都是根据原型制作一个尽可能小的图片,然后根据需要,用代码将该图片放大。可阅读下CocosCreator的文档介绍制作可任意拉伸的 UI 图像,来理解其中的原理。如果不用九宫格缩放,而是用普通缩放,直接将纹理填充到实际需要的大小,就会出现形变,如下图所示:
在这里插入图片描述
可以看到图中那个较大的矩形框,它的边缘发生了形变,上下边和左右边不一样。原始资源本是这样的:
在这里插入图片描述
造成形变的原因是:图片的宽高缩放比不一样。如果缩放比例一样,虽然边缘也会进行缩放,但不至于像形变后那么难看。由于实际所需并不一定按照原图进行等比缩放,有时可能需要一个正方形,有时可能需要一个长方形,这就导致普通缩放满足不了我们的需求,于是九宫格就排上用场了。

游戏引擎肯定支持九宫格缩放功能,像CocosCreator、Unity这些,只需给图片设置一下类型,调整参数,就可以实现九宫格效果。那么九宫格原理是怎样的,以及如何在SDL中使用?其实很简单,理解原理,代码实现起来也不难。既然整体缩放会

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值