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