Windows窗体.NET 2.0:如何绘制PNG图标?

Ian*_*oyd 11 .net graphics windows-vista winforms

注意:问题在应用程序中使用256 x 256 Vista图标处理使用"Vista"图标作为应用程序的图标.这个问题涉及手动绘制Vista图标.

注意:问题WinForms .NET 2.0:如何绘制正确大小的图标?处理绘制从文件加载的Vista图标.这个问题涉及绘制从.resource加载的Vista图标.


我在我的Visual Studio项目中包含了一个具有各种格式的图标:

  • 16×16
  • 32×32
  • 48×48
  • 256x256(PNG压缩)

现在想绘制256x256版本.我尝试过的以下任何事情都没有.

下面将32x32格式绘制为256x256:

Icon ico = Properties.Resources.TestIconThatHasA256PNGFormat;
e.Graphics.DrawIcon(ico, new Rectangle(0, 0, 256, 256));
Run Code Online (Sandbox Code Playgroud)

以下是未拉伸的32x32格式:

Icon ico = Properties.Resources.TestIconThatHasA256PNGFormat;
e.Graphics.DrawIconUnstretched(ico, new Rectangle(0, 0, 256, 256));
Run Code Online (Sandbox Code Playgroud)

下面将32x32格式绘制为256x256:

Icon ico = Properties.Resources.TestIconThatHasA256PNGFormat;
e.Graphics.DrawImage(ico.ToBitmap(), new Rectangle(0, 0, 256, 256));
Run Code Online (Sandbox Code Playgroud)

下面将48x48格式绘制为256x256:

Icon ico = Properties.Resources.TestIconThatHasA256PNGFormat;
e.Graphics.DrawIcon(
      new Icon(ico, new Size(256, 256)),
      new Rectangle(0, 0, 256, 256));
Run Code Online (Sandbox Code Playgroud)

如何绘制256x256格式图标?


笔记:

  1. 该图标不是来自文件,因此PInvoking LoadImage()将无济于事.

  2. 该图标不是与文件关联的图标,因此PInvoking SHGetFileInfo()无济于事.也不会使用Icon.ExtractAssociatedIcon.

  3. 我也没有尝试在运行时创建256x256格式的图标,因此设计用于实现这一目标的库无济于事.

    2:问题WinForms .NET 2.0:如何绘制正确大小的图标?

Nat*_*n W 0

我不久前问过类似的问题,但运气不佳。我帖子中的一些答案可能会对您有所帮助,有一种方法,但看起来很难。链接到我的帖子在这里