/// <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, ISEToolStripImageProvider 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); }
/// <summary> /// Forces all images sizes to be refreshed from the respective providers. /// </summary> protected void RefreshItemImages() { Size imageSize = SEToolStripIconImageProvider.GetIconSize(ImageSize); ImageScalingSize = imageSize; bool changesMade = false; ISEToolStripImageProvider 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 ISEToolStripImageProvider) { imageProvider = item as ISEToolStripImageProvider; } else if (item.Tag is ISEToolStripImageProvider) { imageProvider = item.Tag as ISEToolStripImageProvider; } // 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; } } } } }