最近要做分享截图功能,引擎自带的截图不能控制尺寸,按照论坛的例子实现的有问题
:void saveScreenshot(const std::string& fileName, float scale, const std::function<void(const std::string&)>& callback)
{
Image::Format format;
//进行后缀判断
if(std::string::npos != fileName.find_last_of(".")){
auto extension = fileName.substr(fileName.find_last_of("."),fileName.length());
if (!extension.compare(".png")) {
format = Image::Format::PNG;
} else if(!extension.compare(".jpg")) {
format = Image::Format::JPG;
} else{
CCLOG("cocos2d: the image can only be saved as JPG or PNG format");
return;
}
} else {
CCLOG("cocos2d: the image can only be saved as JPG or PNG format");
return ;
}
auto scene = Director::getInstance()->getRunningScene();
auto size = Director::getInstance()->getWinSize();
//获取屏幕尺寸,初始化一个空的渲染纹理对象
auto renderTexture = RenderTexture::create(size.width * scale, size.height * scale, Texture2D::PixelFormat::RGBA8888);
Point ancPos = scene->getAnchorPoint();
// 缩小屏幕截屏区域
scene->setScale( scale );
scene->setAnchorPoint(cocos2d::Point(0, 0)); //保存文件
//渲染纹理开始捕捉
renderTexture->begin();
//绘制当前场景
scene->visit();
//结束
renderTexture->end();
renderTexture->saveToFile(fileName , format);
// 恢复屏幕尺寸
scene->setScale(1);
scene->setAnchorPoint(ancPos);
//使用schedule在下一帧中调用callback函数
auto fullPath = FileUtils::getInstance()->getWritablePath() + fileName;
auto scheduleCallback = &,fullPath,callback](float dt){
callback(fullPath);
};
auto _schedule = scene->getScheduler();
_schedule->schedule(scheduleCallback, scene, 0.0f,0,0.0f, false, "screenshot");
}
结果图片尺寸对了,但是截图只有左下角的部分图片~ 有知道的吗? 如何修改