Laden...

StolenIcon

Letzter Beitrag vor 16 Jahren 4 Posts 9.132 Views
StolenIcon

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 ?

  • 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

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...

IcoFX

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

The Humble Programmer by Edsger W. Dijkstra