четверг, 16 октября 2014 г.

Извлечение иконок из сборки библиотки DevExpress

[DevExpress Image Gallery File Extractor]

Библиотка элементов управления DevExpress для WinForms содержит сборку “DevExpress.Images”, иконки которой отобржаются в галерее картинок (DX Image Gallery). Эта иконки доступны в диалоге выбора картинок из ресурсов для контролов этой библиотки.

Ниже код для извлечения этих ресурсов в файловую систему.

private void buttonExtractImages_Click(object sender, EventArgs e) {
    String extractFodlerPath = null;

    FolderBrowserDialog fbd = new FolderBrowserDialog();
    if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        extractFodlerPath = fbd.SelectedPath;
    else
        return; 

    try {
        Assembly assembly = typeof(DevExpress.Images.DXImages).Assembly;
        foreach (String name in assembly.GetManifestResourceNames()) {
            using (Stream stream = assembly.GetManifestResourceStream(name)) {

                using (IResourceReader reader = new ResourceReader(stream)) {
                    foreach (DictionaryEntry entry in reader) {

                        String fileName = entry.Key.ToString().Replace("/", "_");

                        byte[] bytes = null;
                        using (UnmanagedMemoryStream ums = entry.Value as UnmanagedMemoryStream) {
                            bytes = new byte[ums.Length];
                            ums.Read(bytes, 0, bytes.Length);
                        }

                        FileInfo fi = new FileInfo(Path.Combine(extractFodlerPath, fileName));
                        using (FileStream fs = fi.OpenWrite()) {
                            fs.Write(bytes, 0, bytes.Length);
                        }
                    }
                }
            }
        }
    }
    catch (Exception ex) {
        MessageBox.Show(ex.Message, "Error");
    }
}

Результат выглядит следующим образом:


Комментариев нет: