新做的一个基于OPENGL的gui库
#include <BGE/All> using namespace bge; Window* createButton(const std::string& name,const String& text)
{
Button* button = new Button(,text);
button->setName(name);
button->setSize(Vector2f(,));
return button;
} int main(int argc, char* argv[])
{
FileSystem::instance().initial(argv[]);
FileSystem::instance().setResourcePackage("data.zip");
WindowManager::instance().initialize("simkai.ttf",false); Device* device = Device::create();
device->initial();
device->createWindow(,,bge::String("BGE Window")); Panel* panel = new Panel(FloatRect(,,,),);
GridLayout* layout = new GridLayout();
panel->setLayout(layout);
std::vector<float> widths;
widths.push_back(0.0f);
layout->setColumnWidths(widths); std::vector<float> heights;
for(int k = ; k < ; ++k)
heights.push_back(48.0f);
heights.push_back(0.0f);
layout->setRowHeights(heights); GridCellInfo info;
info.columnIndex_ = ; info.rowIndex_ = ; layout->addWindow(createButton("button1",L"按键"),info);
info.columnIndex_ = ; info.rowIndex_ = ; layout->addWindow(createButton("button2",L"按键"),info);
info.columnIndex_ = ; info.rowIndex_ = ; layout->addWindow(createButton("button3",L"按键"),info);
info.columnIndex_ = ; info.rowIndex_ = ; layout->addWindow(createButton("button4",L"按键"),info);
info.columnIndex_ = ;
info.rowIndex_ = ;
info.horizontalSpan_ = ;
Window* edit = new EditField(NULL,L"Edit Text");
edit->setSize(Vector2f(,));
layout->addWindow(edit,info);
info.columnIndex_ = ;
info.rowIndex_ = ;
info.horizontalSpan_ = ;
layout->arrangeWithin(); FrameWindow* window = new FrameWindow();
window->enableMovement();
window->setText(L"BGE窗体");
window->setClientPanel(panel); WindowManager::instance().addWindow(window); while(device->isRunning())
{
device->preRender();
WindowManager::instance().update();
device->swapBuffers();
device->pollEvents();
} WindowManager::instance().terminate();
device->closeWindow();
device->terminate();
device->deleteLater();
return ;
} 显示如下: 在开发上参考了Qt等软件,支持常见控件,控件序列化,整体换肤,控件换肤 以上代码写的相当啰嗦 其实可以这样写:int main(int argc, char* argv[])
{
FileSystem::instance().initial(argv[]);
FileSystem::instance().setResourcePackage("data.zip");
WindowManager::instance().initialize("simkai.ttf",false); Device* device = Device::create();
device->initial();
device->createWindow(,,bge::String("BGE Window")); Window* window = WindowManager::instance().createWindow("ui.xml");
if(window)
WindowManager::instance().addWindow(window); while(device->isRunning())
{
device->preRender();
WindowManager::instance().update();
device->swapBuffers();
device->pollEvents();
} WindowManager::instance().terminate();
device->closeWindow();
device->terminate();
device->deleteLater();
return ;
}做这个不为别的就是想做
现在有点小问题,修改好了我会上源码 欢饮指点~
新做的一个基于OPENGL的gui库的更多相关文章
- Axios 是一个基于 promise 的 HTTP 库
Axios 是一个基于 promise 的 HTTP 库 vue项目中关于axios的简单使用 axios介绍 Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.j ...
- 手把手做一个基于vue-cli的组件库(上篇)
基于vue-cli4的ui组件库,先贴个最终效果吧,步骤有点多,准备分上下篇,上篇:如何做一个初步的组件.下篇:编写说明文档及页面优化.开工. GitHub源码地址:https://github.co ...
- 使用webpack4搭建一个基于Vue的组件库
组内负责的几个项目都有一些一样的公共组件,所以就着手搭建了个公共组件开发脚手架,第一次开发 library,所以是参考着 iview 的配置来搭建的.记录如何使用webpack4搭建一个library ...
- Glidar: 一个基于OpenGL的开源实时3D传感器仿真器
1 简介 这篇博文将介绍一个简单易用的3D传感器仿真器,可以用来模拟Lidars,立体视觉,基于时间飞行技术的ToF相机和微软的Kinect实时产生3D点云数据.Glidar仿真器并不是针对特定的某一 ...
- 手把手做一个基于vue-cli的组件库(下篇)
基于vue-cli4的ui组件库,上篇:如何做一个初步的组件.下篇:编写说明文档及页面优化.接上篇,开工. GitHub源码地址:https://github.com/sq-github/sq-ui ...
- 准备开发一个基于canvas的图表库,记录一些东西(一)
开源的图表库已经有很多了,这里从头写个自己的,主要还是 提高自己js的水平,增加复杂代码组织的经验 首先写一个画图的库,供以后画图表使用.经过2天的开发,算是能拿出点东西了,虽然功能还很弱,但是有了一 ...
- 菜渣开源一个基于 EMIT 的 AOP 库(.NET Core)
目录 1,快速入门 1.1 继承 ActionAttribute 特性 1.2 标记代理类型 2,如何创建代理类型 2.1 通过API直接创建 2,创建代理类型 通过API 通过 Microsoft. ...
- Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。
从浏览器中创建 XMLHttpRequests 从 node.js 创建 http 请求 支持 Promise API 拦截请求和响应 转换请求数据和响应数据 取消请求 自动转换 JSON 数据 客户 ...
- Python GUI库
PyQT不错的,只是要小心,这个东西是GPL的,如果你要写商业程序需要购买商业版授权.另外PyGTK.wxPython都是不错的GUI库.Python自带了一个基于TkInter的GUI库,如果你不想 ...
随机推荐
- spring4.2.3+mybatis+spring-security配置文件
1.web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=&qu ...
- FPGA书籍
Xilinx FPGA开发实用教程(第2版) 徐文波,田耘 著
- 基于jQuery的email suggest插件
最近项目中有表单提交的地方需要用户填写邮箱,PM(产品经理)和运营都强烈要求在用户填写邮箱的时候出现suggest列表,简化用户输入的填写流程.我考虑了下,这个应该也是经常会用到的功能,细心的朋友可能 ...
- C#(转自wiki)
C#是微软推出的一种基于.NET框架的.面向对象的高级编程语言.C#的发音为"C sharp",模仿音乐上的音名"C♯"(C调升),是C语言的升级的意思.其正确 ...
- web跨域访问,session丢失的问题
web跨域访问,session丢失的问题25 http://www.iteye.com/problems/71265 http://www.iteye.com/topic/264079 具体情况如下: ...
- JConsole监控远程Tomcat服务器
为了解决内存溢出的问题,会用到一些监视内存的工具,jconsole这个工具在jdk1.7自带了.这个工具可以查看系统的堆,非堆,线程,等等的一些整体的情况,从而可以判断出系统的一个大概的性能情况. c ...
- C++中vector的remove用法
我将从remove的复习开始这个条款,因为remove是STL中最糊涂的算法.误解remove很容易,驱散所有关于remove行为的疑虑——为什么它这么做,它是怎么做的——是很重要的. 这是rem ...
- 关于redis的主从复制
redis主从复制需要注意的一个问题 这两天我朋友在使用redis偶尔会遇见一个问题,就是所有的缓存莫名其妙会不见,找了好久都没找到,他一直以为 有人错误执行了什么命令 他跟我说的时候我估计是主从复制 ...
- expr命令的一些用法
expr是evaluate expressions的缩写,我的理解它的作用就是用来输出表达式的值. 看下面的几个例子. (1)进行数值运算 $:expr 1 + 2 //'+' 左右两边必须有 ...
- 【学】React的学习之旅7-官方例子总结
如果在标签里有注释,除了使用/**/之外,如果写在子标签中,外面还需要用{}包起来,指明这段是javascript代码,否则这段注释会直接显示在页面上,例如 render:function (){ r ...