相关疑难解决方法(0)

如何从png图像中获取图标?

我正在创建一个WPF应用程序,所以我主要使用ImageSource类来处理图标.但是,系统托盘图标必须是类型System.Drawing.Icon.是否可以从png图像创建这样的对象?

我尝试过以下方法:

private static System.Drawing.Icon _pngIcon;
public static System.Drawing.Icon PngIcon
{
    get
    {
        if (_pngIcon == null)
        {  
            //16x16 png image (24 bit or 32bit color)
            System.Drawing.Bitmap icon = global::BookyPresentation.Properties.Resources.star16;
            MemoryStream iconStream = new MemoryStream();
            icon.Save(iconStream, System.Drawing.Imaging.ImageFormat.Png);
            iconStream.Seek(0, SeekOrigin.Begin);
            _pngIcon = new System.Drawing.Icon(iconStream); //Throws exception
        }
        return _pngIcon;
    }
}
Run Code Online (Sandbox Code Playgroud)

Icon构造函数抛出异常,并显示以下消息:"参数'图片'必须是可用作图标的图片."

我认为它可能是图像颜色的位深度,因为我之前遇到了一些问题,但32位和24位图像都不起作用.我可能想做什么?

wpf icons png

21
推荐指数
3
解决办法
3万
查看次数

将位图转换为图标

我正在尝试将位图转换为图标.但是有一些错误,因为结果文件只是空白.

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)

我已经尝试了很多来弄清楚问题,但不能.请告诉我问题出在哪里.

.net c# winforms

18
推荐指数
3
解决办法
3万
查看次数

Win32.DestroyIcon与Icon.Dispose

我有这行代码:

System.Drawing.Icon icon = System.Drawing.Icon.FromHandle(shinfo.hIcon);
Run Code Online (Sandbox Code Playgroud)

几行之后,在使用图标之后我有了这条线:

Win32.DestroyIcon(shinfo.hIcon);
Run Code Online (Sandbox Code Playgroud)

但是,当对我的代码运行静态分析时,它表示Resource_Leak可能来自图标.我想知道如果我调用dispose方法会有什么不同:

icon.Dispose();
Run Code Online (Sandbox Code Playgroud)

而不是现在正在使用的Win32.DestroyIcon().它们之间有什么区别吗?我只是维护这段代码所以我不确定原始开发人员是否有任何使用Win32.DestroyIcon的特殊内容.

c# garbage-collection dispose

5
推荐指数
1
解决办法
1894
查看次数

Icon.ExtractAssociatedIcon用于非文件的东西?

这可能吗?它给了我一个错误,我之前认为它可以用于文件夹和驱动器以及类似的东西.

当我尝试它时,Icon.ExtractAssociatedIcon("C:\")不起作用,并抛出一个错误.

如何从一切获取相关图标?这是vb.net

vb.net

4
推荐指数
1
解决办法
3206
查看次数

标签 统计

c# ×2

.net ×1

dispose ×1

garbage-collection ×1

icons ×1

png ×1

vb.net ×1

winforms ×1

wpf ×1