我正在尝试将位图转换为图标.但是有一些错误,因为结果文件只是空白.
private void btnCnvrtSave_Click(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(sourceFile); //sourceFile = openfiledialog.FileName;
IntPtr Hicon = bmp.GetHicon();
Icon myIcon = Icon.FromHandle(Hicon);
SaveFileDialog sfd = new SaveFileDialog();
sfd.Title = "Save Icon";
sfd.Filter = "Icon|*.ico";
sfd.ShowDialog();
FileStream fileStream = new FileStream(sfd.FileName, FileMode.OpenOrCreate);
myIcon.Save(fileStream);
fileStream.Flush();
fileStream.Close();
MessageBox.Show("Image is converted successfully!");
//Process.Start(sfd.FileName);
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很多来弄清楚问题,但不能.请告诉我问题出在哪里.
我知道这一定非常容易 - 令人难以置信的是,基于VB6的简单程度,我已经多久寻找了这个问题的答案.我只想使用Icon.ExtractAssociatedIcon从EXE文件中提取一个图标,然后将此图标文件保存到我的硬盘中.
所以,这就是我所拥有的,而且我也会告诉你我所尝试过的东西,所以你不要以为我是懒惰的.
OpenFileDialog ofd = new OpenFileDialog();
ofd.ShowDialog();
string s = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\IconData.ico";
Icon ico = Icon.ExtractAssociatedIcon(ofd.FileName);
Bitmap bmp = ico.ToBitmap();
bmp.Save(s, System.Drawing.Imaging.ImageFormat.Icon);
Run Code Online (Sandbox Code Playgroud)
上面的代码只是在我的桌面上创建一个名为"IconData.ico"的文件,其长度为0个字节.再说一次,我确信这一定非常容易,但对于我的生活,我无法弄明白.
谢谢!
我有PNG图像,我需要在显示之前将其转换为图标.
我就这样做了:
public Icon ImageToIcon(Image imgTest)
{
Bitmap bitmap = new Bitmap(imgTest);
Icon icoTest;
IntPtr iPtr = bitmap.GetHicon();
icoTest = (Icon) Icon.FromHandle(iPtr).Clone();
return icoTest;
}
Run Code Online (Sandbox Code Playgroud)
这样做后我失去了透明度,alpha透明图像没有按预期呈现....这可以解决吗?