转了一圈都没找到UE4 widget 截图功能,最接近的就只有屏幕截全屏功能了,所以最后只能自己实现了,贴关键代码
TSharedRef<SWidget> TargetSWidget = Widget->TakeWidget();
TArray<FColor> RawData;
FIntVector OutSize;
bool bScreenshotSuccessful = FSlateApplication::Get().TakeScreenshot(TargetSWidget, RawData, OutSize);
if (bScreenshotSuccessful) {
FString ScreenShotName = FPaths::ProjectSavedDir() + TEXT("ScreenShot.png");
TArray<uint8> CompressedBitmap;
FImageUtils::CompressImageArray(OutSize.X, OutSize.Y, RawData, CompressedBitmap);
FFileHelper::SaveArrayToFile(CompressedBitmap, *ScreenShotName);
}
用个静态函数库包装一下就可以在蓝图使用了,读者可根据需要更改存储的名字。
传入参数Widget即可获取截图存放在项目中的Save文件夹下,取名ScreenShot.png。关键代码是调用FSlateApplication::TakeScreenshot();得到关键的颜色信息和大小信息然后再存储为图片,网上还有可存储为jpg等其他格式的方法,在此我就不实现了。
参考:(1条消息) UE4中实现截图功能并保存到指定路径_蓬 蒿 人的博客-CSDN博客_ue4高分辨率截图保存在哪里啊