调整 ErrorProvider 的系统图标大小

jli*_*ted 1 icons system.drawing errorprovider

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

  Dim WarnProvider As New ErrorProvider
  WarnProvider.BlinkStyle = ErrorBlinkStyle.NeverBlink
  WarnProvider.Icon = SystemIcons.Information.Clone()
  WarnProvider.Icon.Size = New Size(16,16)
Run Code Online (Sandbox Code Playgroud)

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

过去一个小时一直在搞乱它,还没有找到任何好的方法来使这项工作发挥作用。

有人可以帮忙吗?

谢谢

Dre*_*pin 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());
    }
}
Run Code Online (Sandbox Code Playgroud)

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

public SpecificationsDialog( int pid )
{
    InitializeComponent();
    warningProvider1.Icon = Global.ResizeIcon(SystemIcons.Warning,SystemInformation.SmallIconSize);
}
Run Code Online (Sandbox Code Playgroud)