Hallo Leute
Wie oft habt Ihr Euch schon genervt weil ihr irgendwo ein tolles Icon gesehen habt, aber nicht drankommt ....
Die Icons sind in den DLL's und EXE's versteckt. Um diese zu extrahieren kann man entweder auf API-Funktionen zurückgreifen, oder ein Tool einsetzen.
Schön wäre es doch wenn es eine Art ImageList geben würde, in welcher man angeben kann welches Icon aus welcher Datei man verwenden möchte... Dies hätte allerdings wieder den Nachteil, dass man die Icon's statisch in den Code verlinkt (in den Ressourcen)... idealerweise würden die erst zur Laufzeit extrahiert.....
Ich habe jetzt so eine Komponente gebaut.
Diese "StolenIconList" ist in der Lage die hinzugefügten "Definitionen" zur Laufzeit auszuwerten und die Icon's nachzuladen (Vorsicht dass man nur Icon's verwendet, welche auch auf dem Zielsystem vorhanden sind!!!)
Was muss man sonst noch beachten ?
Somit machen diese zwei Varianten der Verwendung Sinn (und auch Kombinationen aus beiden...)
private void Form1_Load(object sender, System.EventArgs e)
{
this.Icon=this.stolenIconList1.StolenIcons[0].Icon;
}
Naja ihr findet selber raus was ich meine...
Edit ... Das dynamische Nachladen hat nicht immer funktioniert... ist korrigiert
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
Sehr nette Idee - eine kleine Frage hätte ich jedoch: Ich habe zu Testzwecken mal versucht ein Icon der system32\shell32.dll auszulesen:
this.Icon = (new StolenIcon.StolenIcon (61, System.Environment.SpecialFolder.System + @"system32\shell32.dll")).Icon;
liefert eine 'System.ArgumentException in System.Drawing.dll'. Wie muß ich richtig vorgehen?
Systemsystem32\shell32.dll ist auch kein gültiger Pfad
Zieh Dir die Komponente auf Dein Form und wähle das Icon im Designer
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
für alle die im allgemeinen ICOs bauen/zeichen oder aus dlls bzw exe extrahieren wollen, der freeware ico-editior IcoFX 🙂
MfG
Tilton
"In der Informatik geht es genauso wenig um Computer wie in der Astonomie um Teleskope."
Edsger W. Dijkstra