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默认设置提高开发效率. "抄过来的",为方便个人记忆才写此文(非常感谢这哥们儿的分享.) 原文地 ...
随机推荐
- 【HDOJ】3487 Play with Chain
Splay入门题目,区间翻转,区间分割. /* */ #include <iostream> #include <string> #include <map> #i ...
- oracle稳定执行计划1
稳定执行计划 1 策略: Oracle的sql 执行计划在一些场景下会发生变化,导致系统会发生不可知的情况,影响系统的稳定性,特别是关键业务的sql. 比如下面的场景: 统计信息过老,重新收集了统计信 ...
- Android-adb shell 读取手机系统文件
1.首先保证手机是root 状态 2.运行 adb shell 页面以后 su root 3.ls 就会发现目录结构可以显示了
- Linux实时将所有输出重定向到文件
Linux的重定向机制十分好用,我们经常需要在服务器上挂起一个服务程序,然后将该程序的所有输出重定向到某个文件,这样即使我们注销了用户,程序依然在linux服务器上运行着. 但是重定向的输出经常无法实 ...
- Java---replace与replaceAll的区别
乍一看,字面上理解好像replace只替换第一个出现的字符(受javascript的影响),replaceall替换所有的字符,其实大不然,只是替换的用途不一样. 这两者很容易搞混,在这里详细讲述下. ...
- lecode Interleaving String
这个问题,前面思考过,当时就是用搜索的方法,此处又遇到一次,发现自己理解的太浅了 Given s1, s2, s3, find whether s3 is formed by the interlea ...
- Java编程常见问题汇总
每天在写Java程序,其实里面有一些细节大家可能没怎么注意,这不,有人总结了一个我们编程中常见的问题.虽然一般没有什么大问题,但是最好别这样做.另外这里提到的很多问题其实可以通过Findbugs( h ...
- Linux 日志基础
首先,我们将描述有关 Linux 日志是什么,到哪儿去找它们,以及它们是如何创建的基础知识.如果你已经知道这些,请随意跳至下一节. Linux 系统日志 许多有价值的日志文件都是由 Linux 自动地 ...
- useradd、passwd、userdel
useradd是新建用户 userdel -r 是删除用户 passwd是修改密码 groupadd是新建组 groupdel是删除组 useradd yonghu 为添加用户 echo " ...
- 设置button 不可被点击
mGetCode.setEnabled(false);//不可被点击 mGetCode.setEnabled(true);//可被点击 bt.setClickable(true);//设置点击为tru ...