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 ...
随机推荐
- 【渗透测试学习平台】 web for pentester -7.文件包含
Example 1 输入单引号,报错,得到物理路径 可通过../../../../etc/paaswd 读取敏感信息 可包含本地文件或远程文件 https://assets.pentesterlab. ...
- xmapp上搭建dvwa
1. XMapp下载好,安装于C:盘下 2. 根据readme中的揭开,首先执行setup_xmapp. 3. 单击xampp_start, 不报错则继续 4. 在browser中访问localhos ...
- zabbix修改和查看登录密码
author:hendsen chen date : 2018-08-30 16:48:18 1,登陆zabbix的服务器,查看zabbix的登陆密码: [root@jason ~]# mysql ...
- 【BZOJ3362-3365】USACO水题四连A
[BZOJ3362][Usaco2004 Feb]Navigation Nightmare 导航噩梦 Description 农夫约翰有N(2≤N≤40000)个农场,标号1到N,M(2≤M≤ ...
- 微信小程序 --- 用户登录
整体逻辑:点击用户中心,如果如果整个页面没有
- VMware Authorization Service 未运行怎么解决
操作步骤如下: 1.按win+r快捷键,输入services.msc,点击确定: 2.服务列表找到VMware Authorization Service 并双击: 3.修改启动类型为自动,点击应用, ...
- 焦作网络赛L-Poor God Water【矩阵快速幂】
God Water likes to eat meat, fish and chocolate very much, but unfortunately, the doctor tells him t ...
- Ubuntu下MySQL主从同步配置
一.在两台Linux机器上安装MySQL 二.Master主服务器配置(192.168.1.3) 1.编辑my.cnf编(命令查找文件位置:find / -name my.cnf) vi /etc/m ...
- flight framework 核心解读
http://blog.csdn.net/sky_zhe/article/details/38906689?utm_source=tuicool&utm_medium=referral
- Xvfb新建虚拟X窗口,通过x11vnc启动VNC Server并转发Xvfb启动的虚拟窗口
远程运行Linux窗口程序使用X Windows太重量级了,可以使用Xvfb新建虚拟X窗口,通过x11vnc启动VNC Server并转发Xvfb启动的虚拟窗口. 1 2 3 4 5 6 7 8 yu ...