cocos2dx 3.x 区域画图
.h文件
bool onTouchBegan(cocos2d::Touch *pTouch, cocos2d::Event *pEvent);
void onTouchMoved(cocos2d::Touch *pTouch, cocos2d::Event *pEvent);
void SeveImage(cocos2d::Ref *pSender);
void ClearImage(cocos2d::Ref *pSender);
cocos2d::RenderTexture *m_pTarget;
std::vector<cocos2d::Sprite *> m_pBrushs;
cocos2d::Rect m_rRect;
.cpp文件
Size size = Director::getInstance()->getWinSize();
Vec2 origin = Vec2(size.width * .5f, size.height * .5f);
//创建画布
m_pTarget = RenderTexture::create(size.width, size.height , Texture2D::PixelFormat::RGBA8888);
m_pTarget->setPosition(Vec2(size.width * .5f, size.height * .5f));
addChild(m_pTarget, -);
//创建触摸
EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create();
listener->onTouchBegan = CC_CALLBACK_2(HelloWorld::onTouchBegan,this);
listener->onTouchMoved = CC_CALLBACK_2(HelloWorld::onTouchMoved,this);
listener->setSwallowTouches(true);
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
//创建保存 清除按钮
MenuItemFont::setFontSize();//字体大小..整个 MenuItemFont 类 修改
MenuItemFont *seve = MenuItemFont::create("Seve Image ", CC_CALLBACK_1(HelloWorld::SeveImage, this));
MenuItemFont *clear = MenuItemFont::create("Clear", CC_CALLBACK_1(HelloWorld::ClearImage, this));
Menu *menu = Menu::create( seve, clear, NULL );
menu->alignItemsVertically();//垂直对齐
menu->setPosition(Vec2(size.width - , size.height - ));
addChild(menu);
//创建区域.只能在区域里画图
m_rRect = Rect(origin.x - size.width * .25f, origin.y - size.height * .25f, size.width * .5f, size.height * .5f);
bool HelloWorld::onTouchBegan(cocos2d::Touch *pTouch, cocos2d::Event *pEvent){
Vec2 location = pTouch->getLocation();
//当点中区域时才可以传递到moved
if (m_rRect.containsPoint(location))
return true;
return true;
}
void HelloWorld::onTouchMoved(cocos2d::Touch *pTouch, cocos2d::Event *pEvent){
Vec2 begin = pTouch->getLocation();
Vec2 end = pTouch->getPreviousLocation();
//移动出了区域就return
if (!m_rRect.containsPoint(begin) || !m_rRect.containsPoint(end))
return;
//开始画图 std::vector<cocos2d::Sprite *> m_pTarget
m_pTarget->begin();//开始
float distance = begin.getDistance(end);//间距
)
{
int d = (int)distance;
m_pBrushs.clear();
; i < d; i++)
{
Sprite *spr = Sprite::create("fire.png");
spr->setColor(Color3B::RED);
spr->setOpacity();
m_pBrushs.push_back(spr);
float difx = end.x - begin.x;
float dify = end.y - begin.y;
float delta = (float)i / distance;
m_pBrushs[i]->setPosition(Vec2(begin.x + (difx * delta), begin.y + (dify * delta)));
m_pBrushs[i]->setRotation(rand() % );
/ 50.0f) + 0.25f;
m_pBrushs[i]->setScale(r);
m_pBrushs[i]->setColor(Color3B(rand() % + , , ));
m_pBrushs[i]->visit();
}
}
//结束画图
m_pTarget->end();
}
void HelloWorld::SeveImage(cocos2d::Ref *pSender){
log("Seve Image");
//保存成功会有弹窗..但不知道保存到那个位置了...
if(m_pTarget->saveToFile("123.png", kCCImageFormatPNG)){
MessageBox("Print Screen OK!", "Hit");
}
}
void HelloWorld::ClearImage(cocos2d::Ref *pSender){
log("Clear");
//清空画笔
m_pTarget->clear(, , , );
}
cocos2dx 3.x 区域画图的更多相关文章
- 深入浅出CChart 每日一课——快乐高四第六课 二丫的青梅,返璞归真之普通窗体多区域画图
有好些朋友给我反映,就是一个窗体中加入好几个CChartWnd之后.工作不正常.这个的确是这样,CChartWnd会接管原来窗体的消息循环,加入多个CChartWnd之后,就相当于出租房转手好几道,消 ...
- [Cocos2d-x For WP8]DrawPrimitives画图
在Silverlight框架的WP8应用程序里面,我们画几何图形的时候会通过Line等等的类在用C#代码或者在XAML上画图,那么在Cocos2d-x For WP8里面我们一样也可以实现这样的功能. ...
- DrawTools(画图工具)原始版本
上一篇文章一个优秀的C#开源绘图软件 DrawTools中详细的介绍了DrawTools的几种演化的较高版本的软件的特色与功能. 这篇文章,将介绍一下这款软件的成名版本, 下载地址DrawTool_O ...
- 生物信息-McScan(Python-jcvi)共线性画图
比较基因组学中,共线性的分析的图无疑是最漂亮的. 共线性分析可以很好地解释进化关系和多倍化事件. 本文主要介绍的是唐老师的Python版McScan(jcvi工具包),这个包很强大,但是其功能在官网的 ...
- 常用的opengl函数(三)
glBlendFunc 定义像素算法. void WINAPI glBlendFunc(GLenum sfactor,GLenum dfactor); 参数编辑 sfactor 指定红绿蓝和 al ...
- html5的canvas绘制迷宫地图
canvas标签一直是html5的亮点,用它可以实现很多东西.我想用它来绘画像迷宫那样的地图.借助到的工具有瓦片地图编辑器tiled(点击跳转到下载链接). 如图:如果你想要画像这样的迷宫地图,如果不 ...
- Qt中绘图坐标QPainter,Viewport与Window的关系
在Qt中常常要自己重载一些paintEvent函数,这个时候往往忽略了两个很关键的API,那就是setViewport和setWindow. Viewport,顾名思义,反应的是物理坐标,就是你实际想 ...
- perl tk说明
介绍: perl/Tk(也被称为pTK) 是一个模块和代码的收集,尝试 简单的配置Tk 8 部件工具包到强大的词素文文字, 动态内存,I/O, 和面向对象,它是一种解释脚本语言 来制作部件和程序 使用 ...
- 在VC6中基于dll开发插件用于各种图片显示(BMP/TGA/JPG/GIF/PNG/TIF/ICO/WMF/EMF/...)
一.图片显示 图片显示的方法: 1. 直接写程序 2. 第3方库 3. 调用COM组件的IPicture接口 4. 使用MFC的CPictureHolder类 5. 使用GDI+的CImag ...
随机推荐
- [转载]2014年10月26完美世界校招两道java题
public class VolitileTest { volatile static int count=0; public static void main(String args[]){ for ...
- 第十篇:基于TCP的一对回射客户/服务器程序及其运行过程分析( 上 )
前言 本文将讲解一对经典的客户/服务器回射程序,感受网络编程的大致框架( 该程序稍作改装即可演变成各种提供其他服务的程序 ):同时,还将对其运行过程加以分析,观察程序背后协议的执行细节,学习调试网络程 ...
- 如何使用vue的axios结合PHP去上传文件
我们在做表单提交的时候,往往会碰到一些表单提交的需求,那vue的axios与上传文件碰撞后不会出现什么不一样的火花吗,听我一一道来: 首先,我们需要对写一个vue的axios的表单提交,由于本人用的是 ...
- INSERT INTO 语句
语法 INSERT INTO 表名称 VALUES (值1, 值2,....) 我们也可以指定所要插入数据的列: INSERT INTO table_name (列1, 列2,...) VALUES ...
- OracleServiceORCL这个服务竟然不见了
OracleServiceORCL这个服务竟然不见了,后数据库连接不成功,晕死,以前使用数据库还能看到,现在竟然不见了?Why?我猜测原因有二: ①:电脑已经装了Oracle数据库后又装了MySql数 ...
- Python初学总结
下边的总结都是在python3上 一.基础 1.输出与输入: 输出:print(变量/字符串) 输入:input() 返回的是字符串 price=input() print(price) 2.pyth ...
- 在MacOS上搭建Vulhub漏洞平台环境
一.安装python3和docker brew install python3 brew cask install docker sudo pip3 install docker-compose 二. ...
- crossdomain.xml跨域配置文件的安全注意事项
零.绪论: 对WEB中的FLASH确实了解不多,对程序中的跨域配置也了解不多,这是自己以前写的一篇笔记,到现在也还了解不深,勉强记下来罢了,备忘. 一.什么是crossdomain.xml?这是一个f ...
- Eclipse 真机调试检测不到手机解决方案
想用Eclipse真机调试,但是死活检测不到手机. 手机已经打开了usb调试模式. 开始用的华为Mate9,后面试了下小米,都不行. 在网上搜了一堆,什么安全驱动.adb占用.删除360手机助手.修改 ...
- 【BZOJ2957】楼房重建 分块
[BZOJ2957]楼房重建 Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子 ...