什么是九宫格方式绘图?
顾名思义,就是把一个方块分割成 9 个部分,如图所示:
九宫格绘图的原理就是把背景图分割成 9 个部分,绘制时:
- 四个角(1、3、7、9)的大小不变
- 左右部分(4、6)宽度不变,进行垂直拉伸或平铺绘制
- 上下部分(2、8)高度不变,进行水平拉伸或平铺绘制
- 中间部分(5)进行拉伸或平铺绘制
为什么是九宫格方式绘图?
当背景图和需要绘制的范围不一样大时,能够最大限度的保证绘制出来的效果和背景图接近。
效果对比图
一图胜千言,使用同一张背景图,一般的绘制拉伸(drawPixmap)与九宫格绘制的效果区别:
使用九宫格qss方式(左边)与九宫格代码绘制(右边)的效果对比:
可以看出,我们几乎看不出来qss方式与代码方式有什么区别!所以,直接使用qss样式就可以处理背景图和需要绘制的范围不一样大时,效果图圆角或者边框会失真的问题。
九宫格QSS样式表
.QFrame {
border-width: 25px 25px 25px 25px;
border-image: url(:/res/bg_frame.png) 25 25 25 25 repeat stretch;
min-height: 60px;
min-width: 100px;
padding: 0px 0px 0px 0px;
}