【问题标题】:edit icon at a specific resolution programmatically以编程方式以特定分辨率编辑图标
【发布时间】:2013-09-18 16:20:45
【问题描述】:

在我的 winforms 应用程序中,我可以使用 this.Icon 更改任务栏图标,但这也会更改标题栏中的应用程序图标。

这就是我当前编辑图标的方式:

public static Icon GetIcon(string text)
{
    //Create bitmap, kind of canvas
    Bitmap bitmap = new Bitmap(32, 32);

    Icon icon = new Icon(@"<icon-location>");
    System.Drawing.Font drawFont = new System.Drawing.Font("Calibri", 12, FontStyle.Bold);
    System.Drawing.SolidBrush drawBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Orange);

    System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(bitmap);

    graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixel;
    graphics.DrawIcon(icon, 0, 0);
    graphics.DrawString(text, drawFont, drawBrush, 20, 15);


    Icon createdIcon = Icon.FromHandle(bitmap.GetHicon());

    drawFont.Dispose();
    drawBrush.Dispose();
    graphics.Dispose();
    bitmap.Dispose();

    return createdIcon;
}

在需求发生变化之前这不是问题,现在只需要更改任务栏图标而不更改标题栏(左上角应用程序窗口)图标。

经过一番搜索,我发现了这个answer,它基本上表明正在使用不同的分辨率在不同的位置显示图标。该答案中提到的“Greenfish Icon Editor Pro”效果很好,但我的编辑需要在运行时完成,因为它被用作通知方法来通知用户未读通知的数量,因此它不是一次性编辑。

我意识到我需要更改图标的 64x64 以实现我的目标,但到目前为止我所能做的就是一起更改图标。

我是否可以编辑 GetIcon() 函数来编辑特定的图标分辨率? (或者至少是一种替代方法的建议将不胜感激)

【问题讨论】:

    标签: c# winforms icons


    【解决方案1】:

    你要问的是:

    如何以编程方式创建多图标?

    .NET 的标准 Icon 类不提供任何功能,因为 .NET 没有 ICON 编码器,请参阅 this article 以获得证明。

    顺便说一句,您可以创建一个 multiIcon 只需创建自己的编码器,幸运的是您不需要这样做,因为已经有一些好心人已经这样做了。一些有用的链接:

    希望这会有所帮助。

    【讨论】:

    • 我使用了来自VB examples thread 的 IconEX DLL 和 GetIcon() 函数的组合。谢谢
    猜你喜欢
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多