c# 矢量图标动态生成库

在研发中,在这里提供一个非常好用的工具库,其中的海量图标基本满足我们的需求  ,且使用方法非常简单  ,和web使用FontAwesome方式一样 。该库在开源中国上有,浏览看到,觉得非常好用,灵活性强。


库下载见 http://download.csdn.net/download/wangchao712217/10229184



public partial class FormSample : Form
    {
        public FormSample()
        {
            InitializeComponent();
            this.cmbFontAwesomeType.SelectedIndexChanged+=new EventHandler(cmbFontAwesomeType_SelectedIndexChanged);
        }

        private void FormSample_Load(object sender, EventArgs e)
        {
            string[] names = FontAwesome.TypeDict.Select(v => v.Key).ToArray();
            this.cmbFontAwesomeType.Items.AddRange(names);
            string[] colorNames = Enum.GetNames(typeof(KnownColor));
            this.cmbForeColor.Items.AddRange(colorNames);
            this.cmbBackColor.Items.AddRange(colorNames);
            this.cmbBorderColor.Items.AddRange(colorNames);
            this.cmbFontAwesomeType.SelectedIndex = 0;
        }

        private void cmbFontAwesomeType_SelectedIndexChanged(object sender,EventArgs e)
        {
            if (this.cmbFontAwesomeType.SelectedIndex<0)
            {
                return;
            }
            FontAwesome.IconSize = (int)this.nudIconSize.Value;
            if (this.cmbBackColor.SelectedIndex>-1)
            {
                FontAwesome.BackColer = Color.FromName(this.cmbBackColor.Text); 
            }
            if (this.cmbBorderColor.SelectedIndex > -1)
            {
                FontAwesome.BorderColer = Color.FromName(this.cmbBorderColor.Text); 
            }
            if (this.cmbForeColor.SelectedIndex > -1)
            {
                FontAwesome.ForeColer = Color.FromName(this.cmbForeColor.Text); 
            }
            FontAwesome.BorderVisible = this.cbShowBorder.Checked == true;

            int val = FontAwesome.TypeDict[this.cmbFontAwesomeType.Text];
 //得到bitmap
            Bitmap bmp = FontAwesome.GetImage(val);//f188
            this.panel1.BackgroundImage = bmp;
 //得到icon
            this.Icon = FontAwesome.GetIcon(val);//f188;
        }
    }


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# 中,使用 `dynamic` 关键字可以实现动态编程的功能。通过使用 `dynamic`,可以将变量的类型推迟到运行时进行确定,从而实现一些灵活的编程。 动态生成代码可以通过使用 `System.Reflection.Emit` 命名空间提供的类来实现。这些类允许你在运行时动态地创建和编译代码,并将其加载到当前应用程序域中。 以下是一个使用 `dynamic` 和 `System.Reflection.Emit` 来动态生成一个简单的类的示例: ```csharp using System; using System.Reflection; using System.Reflection.Emit; class Program { static void Main(string[] args) { // 创建一个动态程序集和模块 AssemblyName assemblyName = new AssemblyName("DynamicAssembly"); AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly( assemblyName, AssemblyBuilderAccess.RunAndSave); ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("DynamicModule", "DynamicModule.dll"); // 定义一个名为 MyDynamicClass 的类 TypeBuilder typeBuilder = moduleBuilder.DefineType("MyDynamicClass", TypeAttributes.Public); // 添加一个名为 MyDynamicMethod 的方法 MethodBuilder methodBuilder = typeBuilder.DefineMethod( "MyDynamicMethod", MethodAttributes.Public | MethodAttributes.Static, typeof(void), new Type[] { typeof(string) }); // 向方法中添加代码 ILGenerator il = methodBuilder.GetILGenerator(); il.Emit(OpCodes.Ldstr, "Hello, World!"); il.Emit(OpCodes.Call, typeof(Console).GetMethod("WriteLine", new Type[] { typeof(string) })); il.Emit(OpCodes.Ret); // 完成类的定义 Type myDynamicClass = typeBuilder.CreateType(); // 创建一个实例并调用 MyDynamicMethod 方法 dynamic instance = Activator.CreateInstance(myDynamicClass); instance.MyDynamicMethod("test"); // 保存程序集 assemblyBuilder.Save("DynamicModule.dll"); } } ``` 以上代码会动态创建一个名为 `MyDynamicClass` 的类,并在其中添加一个名为 `MyDynamicMethod` 的方法,在该方法中输出 "Hello, World!"。最后,代码会将程序集保存到当前目录下的 `DynamicModule.dll` 文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值