如何在C# Windows窗体对话框中显示标准的错误图标?

14

我想在Windows表单对话框中使用标准错误图标(标准图标)。如何将错误图标加载到Image以进行显示?

3个回答

24

通过使用Icon.ToBitmap()方法

Bitmap b = SystemIcons.Error.ToBitmap();

编辑:

三年后,又获得了一票赞同,我觉得有必要引导那些只想绘制图标到一个图形对象的人去阅读 @Hans Passant 的答案。这是一个更好的解决方案。


顺便提一下,这需要 .NET 3.5 或更高版本。 - Evan Mulawski
@Evan:那不是真的。http://msdn.microsoft.com/zh-cn/library/system.drawing.icon_methods%28v=VS.80%29.aspx - Ed S.
那比预期的要容易。谢谢。 - Jonathan Wright
而 http://msdn.microsoft.com/en-us/library/system.drawing.systemicons.error.aspx 自 1.0 版本以来就一直存在。 - Jonathan Wright
@Ed:没错,只有盾牌图标需要3.5或更高版本。 - Evan Mulawski
好的,嗯,不确定那与例子有什么关系,但无论如何还是好知道的:D - Ed S.

13

我得抱怨一下将一个Control和一个Windows窗口烧毁,只为了绘制一个微不足道的图标,太浪费昂贵的资源了。只是为了省去一行代码而已。

    protected override void OnPaint(PaintEventArgs e) {
        e.Graphics.DrawIcon(SystemIcons.Error, 10, 10);
        base.OnPaint(e);
    }

当然,假设你只需要绘制它,而不是操纵它或进行任何需要图像的操作。在这种情况下,“尽情发挥” :D - Ed S.
@EdS - 如果你想要特殊效果,那么你可以使用Graphics.FromImage(),但仍然需要使用DrawIcon()。但我承认我的想象力有限。你有现实的用途吗? - Hans Passant
好的,要调用FromImage,你需要一个图像(Image),而不是图标(Icon)。将其保存到磁盘是一种方法。将其维护为成员变量是另一种方法。将其分配给控件的Image属性,比如PictureBox,是又一种方法。我承认,往往情况下,你只需要绘制它,在这种情况下,你的解决方案更好。 - Ed S.

4

如果您正在使用 Visual Studio 的设计器,请添加一个 PictureBox 对象。然后在代码中,设置您的 PictureBox 的 Image 属性:

dialog.PictureBox.Image = SystemIcons.Error.ToBitmap();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接