I’m trying to set the BorderImage to SBorder, but it appears only if i create the style in code,game module… that excess.
Instead of the normal I get a white image. File path is correct.
I think the problem is in the place of the initialization…
**What is the most simple way to get and set the image to SBorder ? **
Can I use FObjectFinder and FSlateDynamicImageBrush insted FSlateImageBrush ?
like
.Image(new FSlateDynamicImageBrush(NewTexture, FVector2D(128, 128), FName(*TexturePath)));
how ?
my slate
SNew(SBorder)
.HAlign(HAlign_Center)
.VAlign(VAlign_Center)
.BorderImage(this, &SMyUIWidget::GetSecondImageBrush)
[
SNew(STextBlock)
.Font(FSlateFontInfo("Veranda", 54))
.ColorAndOpacity(FLinearColor(1, 1, 1, 1))
.Text(FText::FromString("Page Two"))
]
my function
const FSlateBrush* SMyUIWidget::GetSecondImageBrush() const
{
FString PathToImage;
(SecondTabActive == 0) ? PathToImage = TEXT("Slate/tab_normal.png") : PathToImage = TEXT("Slate/tab_active.png");
FString ImagePath = FPaths::GameContentDir() / PathToImage;
FName BrushName = FName(*ImagePath);
return new FSlateImageBrush(BrushName, FVector2D(256, 64));
}
UPD: the easiest way to set an image is to use the FSlateDynamicImageBrush looks like this:
UTexture2D* tabActiveImage;
UTexture2D* tabPassiveImage;
FSlateDynamicImageBrush* tab_active;
FSlateDynamicImageBrush* tab_normal;
...
AMyHUD::AMyHUD(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
ConstructorHelpers::FObjectFinder<UTexture2D> activeImage(TEXT("Texture2D'/Game/Slate/tab_active.tab_active'"));
tabActiveImage = activeImage.Object;
ConstructorHelpers::FObjectFinder<UTexture2D> passiveImage(TEXT("Texture2D'/Game/Slate/tab_normal.tab_normal'"));
tabPassiveImage = passiveImage.Object;
tab_active = new FSlateDynamicImageBrush(tabActiveImage, FVector2D(256, 64), FName("tabActiveImage"));
tab_normal = new FSlateDynamicImageBrush(tabPassiveImage, FVector2D(256, 64), FName("tabPassiveImage"));
}
...
const FSlateBrush* SMyUIWidget::GetFirstImageBrush() const
{
if (FirstTabActive == 0)
{
return tab_normal;
}
else
{
return tab_active;
}
}
...
SNew(SBorder)
.HAlign(HAlign_Center)
.VAlign(VAlign_Center)
.BorderImage(this, &SMyUIWidget::GetFirstImageBrush)
[
...
]