虚幻4 C++ 九宫格的实现

虚幻4 C++九宫格的实现

思路:

美术一般都会提供一个用来九宫格的背景图片,然后程序把图片切成9份,每份做特殊处理。

虚幻4 C++ 九宫格的实现_第1张图片

角落都不用拉伸,上下边缘向左右拉伸,左右边缘向上下拉伸,中间背景颜色整张拉伸。

最后背景板的结果如下图:

虚幻4 C++ 九宫格的实现_第2张图片


UMG实现的话,每个部分创建一个CANVAS PANEL,panel里面添加一个Image.左下角就这么显示:

虚幻4 C++ 九宫格的实现_第3张图片

绿色是canvas Panel 绿色星星是panel的锚点。红色是图片,红色星星和绿色星星重叠,是图片的锚点。

这样图片就只能显示出Panel部分,只有一个角了。


SNew(SConstraintCanvas)
+ SConstraintCanvas::Slot()
.Offset(FMargin(0.0,0.0,0.0,0.0))
.Anchors(FAnchors(0.0, 0.0, 1.0, 1.0))
.Alignment(FVector2D(0.0, 0.0))
[
SNew(SConstraintCanvas)

+ SConstraintCanvas::Slot()
.Offset(FMargin(0.0, -Corner_Percent, Corner_Percent, Corner_Percent))
.Anchors(FAnchors(0.0, 1.0, 0.0, 1.0))
.Alignment(FVector2D(0.0, 0.0))
.ZOrder(1)
[
SNew(SConstraintCanvas)
+ SConstraintCanvas::Slot()
.Offset(FMargin(0.0, -100, 100, 100))
.Anchors(FAnchors(0.0, 1.0, 0.0, 1.0))
.Alignment(FVector2D(0.0, 0.0))
[
SNew(SImage)
.Image(brush)
]
]

]

我这里只贴一个左下角的代码,其他代码读者可以自己尝试完成。







你可能感兴趣的:(虚幻4)