不管是做web,还是做C/S,经常会用到各种各样的功能按钮图片。然而有的时候控件要求图片格式为Ico,有时候要求是jpg、png、gif等。再加上网上的精美图标资源很多,图标的尺寸都比较统一等等因素,图标转化成png图片,然后拿去做按钮是非常不错的。
在网上找了半天,png转ico的工具很多,但是ico转png的却没有找到,所以就自己研究了下,做了个。其实做这个东西非常简单,代码也很少,这是全部代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace IconToBmp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
List<string> iconList = new List<string>();
string outPath;
string selectPath;
/// <summary>
/// 选择图标
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSelect_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
iconList.Clear();
foreach (string str in openFileDialog1.FileNames)
{
iconList.Add(str);
}
selectPath = openFileDialog1.FileName;
txtInput.Text = "选择了" + iconList.Count.ToString() + "个图标。";
}
}
/// <summary>
/// 选择输出文件夹
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnOutput_Click(object sender, EventArgs e)
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
outPath = folderBrowserDialog1.SelectedPath;
txtOutput.Text = outPath;
}
}
/// <summary>
/// 转换前的数据验证
/// </summary>
/// <returns></returns>
private bool Valid()
{
if (txtOutput.Text.Trim() == "")
{
MessageBox.Show("请选择图片输出位置!");
return false;
}
if (iconList.Count == 0 || iconList == null)
{
MessageBox.Show("请选择要转化的图标!");
return false;
}
return true;
}
/// <summary>
/// 转换
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnGo_Click(object sender, EventArgs e)
{
if (!Valid())
{
return;
}
int count = 0;
foreach (string str in iconList)
{
try
{
string iconName = str.Substring(str.LastIndexOf(@"\")).Replace(".ico", ".png");
System.Drawing.Icon icon = new Icon(str);
Bitmap bmp = icon.ToBitmap();
if (File.Exists(@outPath + iconName))//如果该文件已经存在
{
DialogResult result = MessageBox.Show(iconName.Substring(1) + "已存在,是否替换?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
if (result == DialogResult.OK )//如果替换
{
bmp.Save(@outPath + iconName);
count++;
}
}
else
{
bmp.Save(@outPath + iconName);
count++;
}
}
catch (Exception ex)
{
MessageBox.Show("遇到异常,已终止转换,已转换"+count.ToString()+"个文件,异常消息:"+ex.Message);
return;
}
}
MessageBox.Show("共选择"+iconList.Count+"个图标,已转换" + count.ToString() + "个,"+(iconList.Count-count).ToString()+"个被跳过。");
}
/// <summary>
/// 窗体加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_Load(object sender, EventArgs e)
{
folderBrowserDialog1.RootFolder = Environment.SpecialFolder.Desktop;
if (selectPath != "")
{
openFileDialog1.InitialDirectory = selectPath;
}
}
}
}
本文是使用
B3log Solo 从
奔放的胸毛。 进行同步发布的