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 ?
- CopyRight - Rechte (es ist zu prüfen ob man Icon's eines Herstellers extrahieren darf)
- Wenn man das extrahierte Icon im Designer einem Icon-Property eines Controls zuweist, oder diese in eine Standard-ImageList aufnimmt wird das Icon durch das entsprechende Property gespeichert (in den Ressourcen des Containers abgelegt).... Die StolenIcon-Objekte sowie die StolenImageList kann dann wieder entfernt werden (das Bild wird ja in den Ressourcen gespeichert)
Somit machen diese zwei Varianten der Verwendung Sinn (und auch Kombinationen aus beiden...)
- Die Icons werden erst zur Laufzeit zugewiesen
private void Form1_Load(object sender, System.EventArgs e)
{
this.Icon=this.stolenIconList1.StolenIcons[0].Icon;
}
- Die Icons werden im Designer einem Icon-Property zugewiesen (dann kann die stolenIconList wieder vom Form entfernt werden)
Naja ihr findet selber raus was ich meine...
Edit ... Das dynamische Nachladen hat nicht immer funktioniert... ist korrigiert