我正在尝试调整SystemIcon的大小以便在ErrorProvider中使用。
Dim WarnProvider As New ErrorProvider
WarnProvider.BlinkStyle = ErrorBlinkStyle.NeverBlink
WarnProvider.Icon = SystemIcons.Information.Clone()
WarnProvider.Icon.Size = New Size(16,16)但是SystemIcons将size设置为只读属性。
在过去的一个小时里,我一直在摆弄它,还没有找到任何好的方法来让它工作。
有人能帮帮忙吗?
谢谢
发布于 2015-12-11 01:52:33
我也在寻找这样做的方法,偶然发现了这篇文章。以下是我最终解决这个问题所做的事情。
我创建了一个全局静态方法来调整图标的大小。
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);
}发布于 2013-11-04 04:10:19
我正在寻找同样的东西,并在其他地方找到了答案,所以我将在这里发布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);发布于 2020-01-19 18:28:34
我稍微更改了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));https://stackoverflow.com/questions/16868716
复制相似问题