Nico Game Studio 2.设置页面读写 纹理载入与选择
进度十分之慢...
配置读写一样采用之前写的自动绑定的方法:
分享一下代码:
SetControl是把数据写到control上的.
SetObject是把数据写到对象上
GetData是从控件读取数据,并获得包含这些数据的实例;
public static void SetControl(this Control control, object data)
{
var type = data.GetType();
Dictionary<string, object> values = new Dictionary<string, object>();
var fields = type.GetFields();
foreach (var f in fields)
{
if (values.ContainsKey(f.Name)==false)
{
values.Add(f.Name, f.GetValue(data));
}
}
SetData(control, values);
} public static T GetData<T>(this Control control) where T : new()
{
Dictionary<string, object> values=new Dictionary<string,object>();
CollectData(control,ref values);
if (values.Count > )
{
var newT= new T();
var type = typeof(T);
var fields= type.GetFields();
foreach (var f in fields)
{
if (values.ContainsKey(f.Name))
{
f.SetValue(newT, Convert.ChangeType(values[f.Name],f.FieldType));
}
}
return newT;
}
return default(T);
} public static void SetObject<T>(this Control control ,object obj)
{
Dictionary<string, object> values = new Dictionary<string, object>();
CollectData(control, ref values);
if (values.Count > )
{
var type = typeof(T);
var fields = type.GetFields();
foreach (var f in fields)
{
if (values.ContainsKey(f.Name))
{
f.SetValue(obj, Convert.ChangeType(values[f.Name], f.FieldType));
}
}
}
}
调用方式就是:
control.SetObject<SettingModel>(this);
  Util.SerializeUtil.Serialize2File(SaveFilePath, this);
因为是扩展方法,直接通过控件调用,然后序列化到文件中保存.
2.还做了纹理载入.这部分很简单.麻烦在于在一个控件展示数量可能很大的纹理阵列,还要可以选择,多选.
一开始采用自绘,双滚动条+Paint事件,SetStyle 双缓冲等 解决闪烁问题.后来想说用控件会不会更简单.
于是尝试了,Panel.isAutoScroll=true.往里加panel,设置其Image的方式.
这么做好处是绘图和事件触发很简单,但效率低,载入大图的时候就会卡很久.滚动条也较卡.
还是得自绘,自己做事件判断,效率比较高.
ikvmc.exe可以同时拖入多个jar包进行转换.会自动打包生成1个程序集.
Nico Game Studio 2.设置页面读写 纹理载入与选择的更多相关文章
- FL Studio采样设置之时间拉伸栏
		
今天小编将带领大家了解一下FL Studio采样设置页面中的时间拉伸栏知识,该栏目包含了和采样音频的时间拉伸相关的设置.其右边是一个时间伸缩方式下拉列表,里面列出了很多种类的伸缩方式,自动方式是默认的 ...
 - Android课程---Android Studio简单设置
		
Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以选择使用炫酷的黑色界面.Settings-->Appearance-->Theme, ...
 - 【转】Android Studio简单设置
		
原文网址:http://ask.android-studio.org/?/article/14 Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以 ...
 - Android Studio简单设置(转)
		
Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以选择使用炫酷的黑色界面.Settings --> Appearance --> Th ...
 - FL Studio杂项设置页讲解(下)
		
上篇文章中我们重点讲解了FL Studio中"截断/被截"如何有效的避免个采样在播放时相互干扰的知识以及电平设置栏的知识,今天我们将讲完该页面中剩下的栏目知识,一起来看看吧! 1. ...
 - FL Studio杂项设置页讲解(上)
		
今天我们来看一下FL Studio通道设置窗口中的杂项设置页面.该页面存在于FL Studio绝大多数的通道中,我们可以通过它来设置一些发生器或者第三方插件的参数,接下来就让我们一起来学习下这些参数的 ...
 - FL Studio采样器设置的功能是什么
		
FL Studio是一款很集成化的软件,它和很多其他的软件不同,FL Studio的通道中集成了很多采样器.这种整合的方式不但功能强大而且也很便捷.今天小编就来为大家详细的简介下FL Studio采样 ...
 - 【UWP】通过特定URI打开Win10指定设置页面[转]
		
系统设置其实也是一个Modern应用,它与ms-settings:协议进行了关联. 在设置应用中的每一个具体的设置页面都有一个URI(统一资源标识符)与之对应,通过这些URI就可以直达某个具体的设置页 ...
 - SQL Server Management Studio 2012 设置脚本默认保存路径
		
特别说明,本文是从这里 修改SQL Server Management Studio默认设置提高开发效率. "抄过来的",为方便个人记忆才写此文(非常感谢这哥们儿的分享.) 原文地 ...
 
随机推荐
- USACO3.31Riding the Fences(输出欧拉路径)
			
都忘了欧拉路径是什么了.. 用dfs搜 标记边 刚开始直接从I-N搜 直接超时 2了 先找符合起点和终点的点搜 即度数是奇数 d单dfs也超了 后来换了个姿势.. /* ID: shangca2 L ...
 - linux VM命令下查找
			
使用vi编辑器编辑长文件时,常常是头昏眼花,也找不到需要更改的内容. 这时,使用查找功能尤为重要. 方法如下: 1.命令模式下输入“/字符串”,例如“/Section 3”. 2.如果查找下一个,按“ ...
 - Bzoj 1674: [Usaco2005]Part Acquisition  dijkstra,堆
			
1674: [Usaco2005]Part Acquisition Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 337 Solved: 162[Sub ...
 - 转载:在Ubuntu系统下装Win7并引导双系统
			
转载自http://blog.sina.com.cn/s/blog_9f6451990101blef.html 本人的系统原先是就单ubuntu系统,而且是未分区情况下自动安装的,现在又装了个wind ...
 - QT_校园导航(绘制路线已实现)_Updata_详细注释
			
//MainWidget.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include " ...
 - ActiveForm
			
ActiveForm要和Model一起使用 我想在你的控制器的action中,至少应该这么写: /*action*/ $model = new Comments(); //实例化 Comments m ...
 - ByteBuffer使用之道
			
缓冲区分配和包装 在能够读和写之前,必须有一个缓冲区,用静态方法 allocate() 来分配缓冲区: ByteBuffer buffer = ByteBuffer.allocate(1024); ...
 - 【Android - 基础】之Dialog分类及使用
			
1.确定取消对话框 代码: // 使用AlertDialog.Builder初始化对话框 AlertDialog.Builder builder0 = new AlertDialog.Builder( ...
 - centos7 搭建 docker 环境
			
1. 安装centos7 http://isoredirect.centos.org/centos/7/isos/x86_64/ 下载 everything 版本,最小化版本可能缺失很多东西 我是在 ...
 - notepad++下载Subversion插件,显示intalltion of subversion failed
			
notepad++安卓subversion的插件不成功,是因为我们下载TortoiseSVN客户端的版本跟subversion的版本不兼容 一.背景: 在新浪云平台上开发微信公众账号,因为要使用SVN ...