Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
StolenIcon
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4.221
Herkunft: Zentralschweiz

Themenstarter:

StolenIcon

beantworten | zitieren | melden

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
Attachments
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
private Nachricht | Beiträge des Benutzers
Joltan
myCSharp.de - Member



Dabei seit:
Beiträge: 58
Herkunft: Exil-Badener

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4.221
Herkunft: Zentralschweiz

Themenstarter:

beantworten | zitieren | melden

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...
private Nachricht | Beiträge des Benutzers
TiltonJH
myCSharp.de - Member

Avatar #avatar-3134.png


Dabei seit:
Beiträge: 87
Herkunft: Leipzig

IcoFX

beantworten | zitieren | melden

für alle die im allgemeinen ICOs bauen/zeichen oder aus dlls bzw exe extrahieren wollen, der freeware ico-editior IcoFX

MfG

Tilton
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von TiltonJH am .
"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
private Nachricht | Beiträge des Benutzers