public static class DXImageGalleryLoader
{
public static DevExpress.XtraBars.Ribbon.GalleryItemCollection Load()
{
DevExpress.XtraBars.Ribbon.GalleryItemCollection dataModel = new DevExpress.XtraBars.Ribbon.GalleryItemCollection();
using (System.Resources.ResourceReader reader = GetResourceReader(DevExpress.Utils.DxImageAssemblyUtil.ImageAssembly))
{
System.Collections.IDictionaryEnumerator dict = reader.GetEnumerator();
while (dict.MoveNext())
{
string key = (string)dict.Key as string;
if (!DevExpress.Utils.DxImageAssemblyUtil.ImageProvider.IsBrowsable(key)) continue;
if (IsImageBasedResource(key))
{
Image image = GetImageFromStream((System.IO.Stream)dict.Value);
if (image != null)
dataModel.Add(new DevExpress.XtraBars.Ribbon.GalleryItem(image, image.ToString(), key));
}
}
}
return dataModel;
}
static bool IsImageBasedResource(string key)
{
return key.EndsWith(".png", StringComparison.Ordinal);
}
static System.Resources.ResourceReader GetResourceReader(System.Reflection.Assembly imagesAssembly)
{
var resources = imagesAssembly.GetManifestResourceNames();
var imageResources = Array.FindAll(resources, resourceName => resourceName.EndsWith(".resources"));
if (imageResources.Length != 1)
{
throw new Exception("读取异常");
}
return new System.Resources.ResourceReader(imagesAssembly.GetManifestResourceStream(imageResources[0]));
}
static Image GetImageFromStream(System.IO.Stream stream)
{
Image res = null;
try
{
res = Image.FromStream(stream);
}
catch { res = null; }
return res;
}
/// <summary>
/// 初始化galleryControl
/// </summary>
void InitGallery()
{
galleryControl1.Gallery.Groups.Clear();
GalleryItemGroup group = new GalleryItemGroup() { Caption = "Custom" };
galleryControl1.Gallery.Groups.Add(group);
group.Items.AddRange(DXImageGalleryLoader.Load().Take(1000).ToArray());
}
}