我正在尝试调整SystemIcon的大小以便在ErrorProvider中使用。
Dim WarnProvider As New ErrorProvider
WarnProvider.BlinkStyle = ErrorBlinkStyle.NeverBlink
WarnProvider.Icon = SystemIcons.Information.Clone()
WarnProvider.Icon.Size = New Size(16,16)
但SystemIcons的大小设置为只读属性。
过去一小时一直在搞乱它,并没有找到任何好的方法来完成这项工作。
有人可以帮忙吗?
由于
答案 0 :(得分:4)
我一直在寻找一种方法来做到这一点,并且发现了这篇文章。这就是我最终要解决的问题。
我创建了一个全局静态方法来调整图标大小。
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);
}
答案 1 :(得分: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);
答案 2 :(得分:0)
我稍微更改了Drew的解决方案,使其成为错误提供程序的扩展方法:
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));