Click here to Skip to main content
12,241,270 members (57,323 online)
Click here to Skip to main content
Add your own
alternative version

Stats

46.5K views
887 downloads
12 bookmarked
Posted

Extract images from private ImageLists

, 17 Feb 2006 CPOL
Rate this:
Please Sign up or sign in to vote.
Shows how to extract images from an ImageList on a form.

Sample Image - extractimages.jpg

Introduction

Sometimes you want to extract an image from an existing .NET DLL which is not included as a default resource. For instance, you added an image to an ImageList and forgot where the image came from. You now wish to save this image, which is impossible using the IDE of Visual Studio. To do this, I wrote this small piece of code, which is not completely foolproof, but should work in most occasions.

How it's done

First, I open the DLL and scan it for objects of type Form (exception handling removed):

Assembly ass = Assembly.LoadFrom(textBox1.Text);
Type[] types = ass.GetExportedTypes();
            
foreach(Type type in types)
{
    if (!type.IsAbstract && type .IsSubclassOf(typeof(Form)))
    {
        // create instance and extract images
        Form fm = (Form) ass.CreateInstance(type.FullName);
        extractImages(fm);
    }
}

Extracting the images is quite easy; just remember that there can be more than one ImageList. The same can be done to extract images from other types of controls. I convert the images to PNG to recreate the transparency.

Type t = form.GetType();
FieldInfo field = t.GetField("components", 
   BindingFlags.NonPublic | BindingFlags.Instance );
IContainer comps = (IContainer)field.GetValue(form);
int imglist_idx=0;
foreach(Component c in comps.Components)
{
    if (c is ImageList)
    {
               // .. save individual images

.... and so on, hope you get the idea.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Guido_d
Web Developer
Netherlands Netherlands
I am a .NET developer from Gouda, the Netherlands, developing software since mid eighties.

You may also be interested in...

Comments and Discussions

 
General.Net 4 and form not expecting to be called without prerequisites Pin
mbierman31-Aug-11 13:14
membermbierman31-Aug-11 13:14 
Suggestionvery good Pin
ReniD22-Jul-11 0:29
memberReniD22-Jul-11 0:29 
GeneralMy vote of 5 Pin
jswolf195-Jul-11 22:01
memberjswolf195-Jul-11 22:01 
GeneralMy vote of 5 Pin
Latif.Kankanwadi25-Mar-11 20:56
memberLatif.Kankanwadi25-Mar-11 20:56 
Generalnice Pin
Pranay Rana30-Dec-10 1:04
memberPranay Rana30-Dec-10 1:04 
GeneralNice tool. Some suggestions. Pin
Drew Noakes13-Jun-08 0:34
memberDrew Noakes13-Jun-08 0:34 
GeneralI like!!!! Pin
chris17527-Nov-07 3:47
memberchris17527-Nov-07 3:47 
GeneralRe: I like!!!! Pin
Steve Hansen27-Nov-07 4:05
memberSteve Hansen27-Nov-07 4:05 
QuestionCan this work on an exe? Pin
ncarty9711-Apr-07 3:52
memberncarty9711-Apr-07 3:52 
AnswerRe: Can this work on an exe? Pin
Guido_d25-Sep-07 4:00
memberGuido_d25-Sep-07 4:00 
GeneralRe: Can this work on an exe? Pin
Drew Noakes13-Jun-08 0:27
memberDrew Noakes13-Jun-08 0:27 
Generalcomments Pin
Paul Brower17-Feb-06 3:08
memberPaul Brower17-Feb-06 3:08 
GeneralRe: comments Pin
Guido_d17-Feb-06 3:36
memberGuido_d17-Feb-06 3:36 
GeneralRe: comments Pin
Paul Brower17-Feb-06 3:48
memberPaul Brower17-Feb-06 3:48 
GeneralRe: comments Pin
Guido_d17-Feb-06 4:02
memberGuido_d17-Feb-06 4:02 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.160426.1 | Last Updated 17 Feb 2006
Article Copyright 2006 by Guido_d
Everything else Copyright © CodeProject, 1999-2016
Layout: fixed | fluid