/// <summary> /// Forces all images sizes to be refreshed from the respective providers. /// </summary> protected void RefreshItemImages() { Size imageSize = ShengToolStripIconImageProvider.GetIconSize(ImageSize); ImageScalingSize = imageSize; bool changesMade = false; IShengToolStripImageProvider imageProvider = null; foreach (ToolStripItem item in Items) { if (item.Size != imageSize) { imageProvider = null; // If an image provider was registered with the toolstrip then... if (ContainsImage(item)) { if (IsImageSupported(item, ImageSize)) item.Image = GetImage(item, ImageSize); else if (UseUnknownImageSizeIcon && IsImageSupported(ImageSize)) item.Image = GetImage(ImageSize); changesMade = true; } else if (item is IShengToolStripImageProvider) { imageProvider = item as IShengToolStripImageProvider; } else if (item.Tag is IShengToolStripImageProvider) { imageProvider = item.Tag as IShengToolStripImageProvider; } // If an alternative image provider was found, attempt to use that. if (!changesMade && imageProvider != null) { if (imageProvider.IsImageSupported(ImageSize)) { item.Image = imageProvider.GetImage(ImageSize); changesMade = true; } } // Were changes made? if (changesMade) { // Automatically adjust the image scaling mode. if (item.Image != null && item.Image.Size == imageSize) item.ImageScaling = ToolStripItemImageScaling.None; else item.ImageScaling = ToolStripItemImageScaling.SizeToFit; } } } }
/// <summary> /// Fetches an image of the requested size. /// </summary> /// <param name="size">Size of image to obtain.</param> /// <returns>If supported, returns requested image. A value of null /// indicates that the requested size is not supported.</returns> public virtual Image GetImage(ShengToolStripImageSize size) { if (DefaultImageProvider == null) throw new NullReferenceException(); if (DefaultImageProvider == this) { Size iconSize = ShengToolStripIconImageProvider.GetIconSize(size); Bitmap icon = new Bitmap(16, 16); Icon iconResult = new Icon(DrawingTool.ImageToIcon(icon), iconSize); return iconResult.ToBitmap(); } return DefaultImageProvider.GetImage(size); }
/// <summary> /// Fetches an image of the requested size. /// </summary> /// <param name="size">Size of image to obtain.</param> /// <returns>If supported, returns requested image. A value of null /// indicates that the requested size is not supported.</returns> public Image GetImage(ShengToolStripImageSize size) { Icon desiredSize = new Icon(SourceIcon, ShengToolStripIconImageProvider.GetIconSize(size)); return desiredSize.ToBitmap(); }