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默认设置提高开发效率. "抄过来的",为方便个人记忆才写此文(非常感谢这哥们儿的分享.) 原文地 ...
随机推荐
- eMMC(KLM8G2FE3B)
Tiny4412原理图中,eMMC是169-PIN,资料中对应内存为16/32G:而用户手册上eMMC内存为4G,对应的是153-PIN? 原理图中上标注:KLM8G2FE3B-B001_1. ...
- 利用if else来运行咱们结婚吧
static void Main(string[] args) { while (true) { string ...
- linux下阅读源代码的工具
说来真是惭愧呀.一直在用VIM 做开发.却不知道VI 里还有这么好使的工具.以前一直都是用: find -type f -print | xargs grep -i **** 在源代码里查找. 原来L ...
- 详解Makefile 函数的语法与使用
使用函数: 在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能.make所支持的函数也不算很多,不过已经足够我们的操作了.函数调用后,函数的返回值可以当做变量来使 ...
- devi into python 笔记(六)正则表达式 原始字符串
字符串函数replace: #string.replace: #字符串的replace方法:替换子串,不改变原来的字符串 s = "broad road" #打印出来会发现不单单是 ...
- 前端模块化开发篇之grunt&webpack篇
几个月前写了一篇有关gulp和browserify来做前端构建的博客,因为browserify用来做js的打包时可能有些麻烦(特别是在写React的时候),所以这里再强烈推荐一款js打包工具-webp ...
- is not mapped 解决方法
1.确定是否已配置相关XML 2.注意类名大小写问题 3.如果是注解 第一种方式 @Entity(name = "Tb_User") public class User { ...
- Bzoj 1901: Zju2112 Dynamic Rankings 树套树,线段树,平衡树,Treap
1901: Zju2112 Dynamic Rankings Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 6471 Solved: 2697[Su ...
- Hadoop--map/reduce实现单词计数
import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.*; import org.apache.hadoop.mapred.*; ...
- HW4.23
public class Solution { public static void main(String[] args) { double sum = 0; for(int i = 1; i &l ...