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默认设置提高开发效率. "抄过来的",为方便个人记忆才写此文(非常感谢这哥们儿的分享.) 原文地 ...
随机推荐
- Android日期时间格式国际化
公共类 的DateFormatSymbols 扩展对象 实现 Serializable接口 Cloneable接口 java.lang.Object的 ↳ java.text.DateForma ...
- 如何实现Android重启应用程序代码 ?
Intent i = getBaseContext().getPackageManager() .getLaunchIntentForPackage(getBaseContext().getPack ...
- A WCF-WPF Chat Application
http://www.codeproject.com/Articles/25261/A-WCF-WPF-Chat-Application
- Hadoop RPC简单实例
1.导入Hadoop-Common-2.6.0.jar导入工程,里面的IPC实现RPC需要的文件. 2.服务器端 (1)服务接口 package com.neu.rpc.server; /** * ...
- 关于Azure Auto Scale的高级属性配置
Auto Sacle是一种自动化管理云服务负载的功能,系统可以根据预先制定的规则,在满足条件的情况下对计算实例的数量进行增减从而可以用来优化使用Azure的计算资源,可以适用于Cloud Servic ...
- 杨佩昌:中国官员去德国考察看什么两眼发光 z
令中国人诧异的德国物价 只要是花费大量人工的行业,就很贵 □杨佩昌 德国是欧洲商品价格的洼地,连精明的瑞士人也开车到德国加油购物 一 2012年凤凰网组织十大著名博主前往澳洲考察并与前总理陆克文对话, ...
- scp 在不同主机之间数据传输
不同的Linux之间copy文件常用有3种方法,第一种就是ftp,也就是其中一台Linux安装ftp Server,这样可以另外一台使用ftp的client程序来进行文件的copy.第二种方法就是采用 ...
- HDOJ/HDU 1200 To and Fro(加密解密字符串)
Problem Description Mo and Larry have devised a way of encrypting messages. They first decide secret ...
- Shell函数参数
在Shell中,调用函数时可以向其传递参数.在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数... 带参数的函数示例: #!/bin/bash funWit ...
- JavaScript实现拖拽预览,AJAX小文件上传
本地上传,提前预览(图片,视频) 1.html中div标签预览显示,button标签触发上传事件. <div id="drop_area" style="bord ...