1

我正在尝试调整 SystemIcon 的大小以在 ErrorProvider 中使用。

  Dim WarnProvider As New ErrorProvider
  WarnProvider.BlinkStyle = ErrorBlinkStyle.NeverBlink
  WarnProvider.Icon = SystemIcons.Information.Clone()
  WarnProvider.Icon.Size = New Size(16,16)

但是 SystemIcons 将大小设置为只读属性。

在过去的一个小时里一直在搞乱它,并没有找到任何好的方法来完成这项工作。

有人可以帮忙吗?

谢谢

4

3 回答 3

5

我也在寻找一种方法来做到这一点,并遇到了这篇文章。这是我最终为解决问题所做的工作。

我创建了一个全局静态方法来调整图标的大小。

public static class Global
{
    public static Icon ResizeIcon( Icon icon, Size size )
    {
        Bitmap bitmap = new Bitmap(size.Width,size.Height);
        using( Graphics g = Graphics.FromImage(bitmap) )
        {
            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
            g.DrawImage(icon.ToBitmap(), new Rectangle(Point.Empty,size));
        }
        return Icon.FromHandle(bitmap.GetHicon());
    }
}

然后我在InitializeComponent()调用后在表单的构造函数中应用了图标。

public SpecificationsDialog( int pid )
{
    InitializeComponent();
    warningProvider1.Icon = Global.ResizeIcon(SystemIcons.Warning,SystemInformation.SmallIconSize);
}
于 2015-12-10T17:52:33.210 回答
0

我一直在寻找同样的东西并在其他地方找到了答案,所以我会在这里发布 http://www.codeproject.com/Questions/242780/error-provider-problem

WarnProvider.Icon = new Icon (SystemIcons.Warning, 16, 16);

或者

WarnProvider.Icon = new Icon (WarnProvider.Icon, 16, 16);
于 2013-11-03T20:10:18.923 回答
0

我将 Drew 的解决方案稍微更改为 errorprovider 的扩展方法:

public static ErrorProvider SetIcon(this ErrorProvider errorProvider, Icon icon, Size size)
    {
        Bitmap bitmap = new Bitmap(size.Width, size.Height);
        using (Graphics g = Graphics.FromImage(bitmap))
        {
            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
            g.DrawImage(icon.ToBitmap(), new Rectangle(Point.Empty, size));
        }
        errorProvider.Icon = Icon.FromHandle(bitmap.GetHicon());
        return errorProvider;
    }

然后它可以像这样使用:

ErrorProvider ep = new ErrorProvider();
ep.SetIcon(SystemIcons.Asterisk, new Size(16,16));
于 2020-01-19T10:28:33.527 回答