Ich komme hauptsächlich aus dem Internet und ein bisschen Windows Forms-Hintergrund. Für ein neues Projekt werden wir WPF verwenden. Die WPF-Anwendung benötigt zur Veranschaulichung 10 bis 20 kleine Symbole und Bilder. Ich denke darüber nach, diese in der Assembly als eingebettete Ressourcen zu speichern. Ist das der richtige Weg?
Wie gebe ich in XAML an, dass ein Image-Steuerelement das Image von einer eingebetteten Ressource laden soll?
quelle
DynamicResource
stattdessen die Markup-Erweiterung verwendenStaticResource
, vorausgesetzt, Sie kennen die Schlüssel zur Kompilierungszeit. In WPF können Sie zur Laufzeit Ressourcenwörterbücher erstellen. Genau das passiert, wenn Sie ein Xaml-Dokument laden. Es ist nur so, dass Sie nicht das entsprechende C # sehen.Width="{Binding Source.PixelWidth, RelativeSource={RelativeSource Self}}"
um dieImage
, wie sonst oft ich Bilder zu sehen grotesk immer aus irgendeinem Grunde skaliert (wie 16x16 Icons etwas gedehnt , dass sieht aus wie 200x200 Pixel).Ich habe festgestellt, dass die beste Vorgehensweise bei der Verwendung von Bildern, Videos usw. ist:
Beispiel
Leistungen:
quelle
Einige Leute fragen, ob sie dies im Code tun und keine Antwort erhalten.
Nachdem ich viele Stunden lang gesucht hatte, fand ich eine sehr einfache Methode, ich fand kein Beispiel und teile meine hier, die mit Bildern funktioniert. (meins war ein .gif)
Zusammenfassung:
Es gibt einen BitmapFrame zurück, den ImageSource- "Ziele" zu mögen scheinen.
Verwenden:
Methode:
Erkenntnisse:
Nach meinen Erfahrungen ist die Pack-Zeichenfolge nicht das Problem. Überprüfen Sie Ihre Streams und insbesondere, wenn Sie sie zum ersten Mal lesen, haben Sie den Zeiger auf das Ende der Datei gesetzt und müssen sie vor dem erneuten Lesen auf Null zurücksetzen.
Ich hoffe, das erspart Ihnen die vielen Stunden, die ich mir für dieses Stück gewünscht habe!
quelle
Im Code zum Laden einer Ressource in der ausführenden Assembly, in der sich mein Image
Freq.png
im Ordner befandIcons
und wie folgt definiert istResource
:Ich habe auch eine Funktion gemacht:
Verwendung (Annahme, dass Sie die Funktion in eine ResourceHelper-Klasse einfügen):
Hinweis : Siehe MSDN Pack-URIs in WPF :
pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml
quelle
new Uri(@"pack://application:,,,/" + pathInApplication)
auch den Trick getan.Ja, das ist der richtige Weg.
Sie können das Bild in der Ressourcendatei nur über den Pfad verwenden:
Sie müssen die Erstellungsaktion der Bilddatei auf "Ressource" setzen.
quelle
Vollständige Beschreibung der Verwendung von Ressourcen: WPF-Anwendungsressourcen, Inhalte und Datendateien
Informationen zum Referenzieren finden Sie unter "Packen von URIs in WPF".
Kurz gesagt, es gibt sogar Mittel, um Ressourcen aus referenzierten / referenzierenden Assemblys zu referenzieren.
quelle
Das hat bei mir funktioniert:
quelle
Wenn Sie verwenden Blend verwenden , ziehen Sie das Bild einfach aus dem Projektfenster auf den Designer , um es besonders einfach zu machen und keine Probleme zu haben, den richtigen Pfad für das Source- Attribut zu finden.
quelle
Ja, das ist der richtige Weg. Sie können Bilder in der Ressourcendatei mithilfe eines Pfads verwenden:
quelle
Die folgenden Arbeiten und die einzustellenden Bilder sind Ressourcen in den Eigenschaften:
quelle