/// <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> /// Assigns an image provider for the specified item. /// </summary> /// <param name="item">Associated toolstrip item.</param> /// <param name="provider">Image provider.</param> /// <returns>Returns true when successful.</returns> public bool AssignImage(ToolStripItem item, IShengToolStripImageProvider provider) { if (item == null || provider == null) throw new ArgumentException("One or more arguments were null references."); if (ContainsImage(item)) return false; ImageProvider.Add(item, provider); HasImagesChanged = true; if (!IsUpdatingImages) RefreshItemImages(); return true; }