cocos2dx[3.2](18)——屏幕截图ScreenShot

【唠叨】

屏幕截图有两种方式:

(1)使用RenderTexture          :这是在2.x版本时最常用的的截图方法。

(2)使用utils::captureScreen() :在3.2版本中新增的截图方法。

【致谢】

http://blog.csdn.net/ganpengjin1/article/details/19088921

http://cn.cocos2d-x.org/article/index?type=wiki&url=/doc/cocos-docs-master/manual/framework/native/wiki/how-to-save-a-screenshot/zh.md



【RenderTexture】

RenderTexture这个动态纹理类,顾名思义就是可以动态创建纹理图片。

屏幕截图主要步骤:

> 开始截图:render->begin();

> 遍历场景:scene->visit();

> 结束截图:render->end();

> 保存截图:render->saveToFile(string& filename, Image::Format format);

其中Image::Format为图片格式,可以保存为PNG、或JPG两种格式。

即:Image::Format::PNGImage::Format::JPG

1、截图方法

//
void HelloWorld::capture(Ref* sender)
{
	CCLOG("ScreenShot");

	//获取屏幕尺寸大小
	Size winSize = CCDirector::sharedDirector()->getWinSize();

	//创建RenderTexture,纹理图片大小为窗口大小winSize
	RenderTexture* screen = RenderTexture::create(winSize.width, winSize.height);

	//屏幕截图
	screen->begin();            //开始抓屏
	this->getParent()->visit(); //遍历当前场景Scene的所有子节点信息,画入screen中
	screen->end();              //结束抓屏

	//保存截图
	screen->saveToFile("ScreenShot.png", Image::Format::PNG); //保存为PNG格式
	//screen->saveToFile("ScreenShot.jpg", Image::Format::JPG); //保存为JPG格式
}
//

2、保存路径

> Win32  :保存在 Debug.win32/ 目录下。

Android:保存在 /data/data/com.summer.hello/files/ScreenShot.png 。



【utils::captureScreen】

v3.2版本utils::captureScreen()方法被加入用于保存屏幕截图。

1、定义

//
	// > afterCaptured :该方法将在捕捉指令后被执行。
	//                    > bool   : 捕捉屏幕截图是否成功。
	//                    > string : 截图存储的路径。
	// > filename      :截图的名字。
	//                    > 可以只是一个文件名。  像这样ScreenShot.png。
	//                    > 也可以是一个绝对路径。像这样/sdcard/ScreenShot.png。
	void captureScreen(const std::function<void(bool, const std::string&)>& afterCaptured, const std::string& filename)
//

2、截图方法

//
//屏幕截图
void HelloWorld::capture(Ref* sender)
{
	CCLOG("ScreenShot");
	utils::captureScreen(CC_CALLBACK_2(HelloWorld::afterCapture, this), "ScreenShot.png");
}

//截图后执行afterCapture
void HelloWorld::afterCapture(bool succeed, const std::string& outputFile)
{
	if (succeed)
	{
		CCLOG("%s", outputFile.c_str());
		//显示截图
		Sprite* sp = Sprite::create(outputFile);
		sp->setPosition(winSize / 2);
		this->addChild(sp);
		sp->setScale(0.25); //放缩
	}
	else
	{
		CCLOG("Capture screen failed.");
	}
}
//

3、保存路径

filename可以只是一个文件名(保存到相对路径):像这样 "ScreenShot.png"

filename也可以是一个绝对路径                :像这样 "/sdcard/ScreenShot.png"

时间: 2024-10-09 20:52:43

cocos2dx[3.2](18)——屏幕截图ScreenShot的相关文章

cocos2d-x学习日志(18) --程序是如何开始运行与结束?

问题的由来 怎么样使用 Cocos2d-x 快速开发游戏,方法很简单,你可以看看其自带的例程,或者从网上搜索教程,运行起第一个HelloWorld,然后在 HelloWorld 里面写相关逻辑代码,添加我们的层.精灵等 ~ 我们并不一定需要知道 Cocos2d-x 是如何运行或者在各种平台之上运行,也不用知道 Cocos2d-x 的游戏是如何运行起来的,它又是如何渲染界面的 ~~~ 两个入口 程序入口的概念是相对的,AppDelegate 作为跨平台程序入口,在这之上做了另一层的封装,封装了不同

cocos2d-x学习笔记(18)--游戏打包(windows平台)

cocos2d-x学习笔记(18)--游戏打包(windows平台) 之前做好的游戏,都是在vs2008下编译执行的.假设说想把游戏公布到网上或者和其它人一起分享游戏,那就得对游戏进行打包.以下我就向大家介绍一款程序打包工具 ----Enigma Virtual Box,这个软件的下载链接我就不提供了,大家在网上输入这个keyword,就有非常多下载链接了. 既然要执行游戏,就得找到.exe文件.有些人可能打开project文件夹下(我的是myGame01)的Debug.win32文件夹找.但没

cocos2dx基础篇(18)——基本绘图draw

[唠叨] cocos2dx封装了大量OpenGL的函数,用于快速绘制基本图形,本节主要讲讲cocos2dx中的基本图形绘制的相关函数.包含:点.直线.矩形.多边形.椭圆.贝塞尔曲线. 特别要感谢"孤狼"大牛,他写的"和屌丝一起学cocos2dx"正是我的启蒙教程. [致谢] http://gl.paea.cn/contents/a486f595fd1d1f8a.html http://blog.csdn.net/conmajia/article/details/85

cocos2d-x学习日志(18) --程序是怎样開始执行与结束?

问题的由来 怎么样使用 Cocos2d-x 高速开发游戏.方法非常easy,你能够看看其自带的例程,或者从网上搜索教程,执行起第一个HelloWorld,然后在 HelloWorld 里面写相关逻辑代码.加入我们的层.精灵等 ~ 我们并不一定须要知道 Cocos2d-x 是怎样执行或者在各种平台之上执行,也不用知道 Cocos2d-x 的游戏是怎样执行起来的.它又是怎样渲染界面的 ~~~ 两个入口 程序入口的概念是相对的,AppDelegate 作为跨平台程序入口,在这之上做了还有一层的封装,封

cocos2dx[2.x]学习笔记

说明: 基于cocos2dx2.2.3,使用C++语言,在Visual Studio 2010进行开发的. 致谢: 在这里特别要感谢网络上给予我帮助的大牛,是他们的博客提供了很多cocos2dx的学习资料,才促使我的成长.以下的相关知识点,大多也是借鉴了他们的博客. 另外强烈建议大家去学习官方给出的TestCpp项目,里面涵盖了使用cocos2dx的精华知识部分. [cocos2dx 2.x] cocos2dx基础篇(1) --Cocos2D-X 和 VS2010 环境配置 cocos2dx基础

cocos2dx jsoncpp

jsoncpp下载 http://sourceforge.net/projects/jsoncpp/ 下载解压后用到的是include\json下面的头文件跟src\lib_json下的文件. 导入头文件 #include "json/json.h" 解析json void parseJsoncpp() { /*{ "name":"more-top", "age":27 }*/ unsigned long size; char

cocos2d-x博客网站推荐和牛逼的教程

Cocos2d-x网站列表 CocoaChina(官方网站,不解释)www.cocoachina.com/ 泰然网(貌似最近有很多不错的文章,不过早期的文章质量一般)www.ityran.com/ Cocos2d-x博客列表 老G的小屋  www.goldlion.blog.51cto.com/ 小满的专栏   www.blog.csdn.net/bill_man/article/details/7341028 子龙山人  www.zilongshanren.com/ 红孩儿的游戏编程之路  w

Metasploit 笔记

一.名词解释 exploit 测试者利用它来攻击一个系统 ,程序,或服务,以获得开发者意料之外的结果 .常见的 有内存溢出,网站程序漏洞利用,配置错误 exploit. payload 我们想让被攻击系统执行的程序,如 reverse shell 可以从目标机器与测试者之间建立一 个反响连接,bind shell 绑定一个执行命令的通道至测试者的机器 .payload 也可以是只 能在目标机器上执行有限命令的程序. shellcode 是进行攻击时的一系列被当作 payload 的指令,通常在目

为 Drupal 7 构建一个新主题

主题解释了 Drupal 网站的用户界面 (UI).虽然主题结构并没有明显的变化,但 Drupal 版本 7 配备了一个新的主题实现方法.本文演示了如何创建一个新的 Drupal 7 主题. Drupal 主题的目标是将框架的处理逻辑和设计元素分开.为了做到这一点,Drupal 采用了一个复杂的主题系统,其中包括主题.主题引擎和挂钩.主题组件与 Drupal 核心系统和模块设计元素配合,创建具有独特外观的用户界面(单独 Drupal 页面和表单).由于将 Drupal 的业务逻辑从它的表示逻辑中