2012-04-06 19 views
0

Ich habe eine Reihe von PNG, Bitmaps und Symbole, die ich in Winforms-Projekten und WPF-Projekten verwenden möchte.Freigeben von Grafiken zwischen WPF und Winforms

Ich bin zufrieden mit der Verwendung von Ressourcen in Winforms und glücklich mit Ressourcen in WPF.

Was machen Menschen dort, wo sie gemeinsame Ressourcen haben? Mein derzeitiges Gefühl ist eine WPF-Ressourcen-Assembly und eine Winforms-Ressourcen-Assembly, aber keiner der Ansätze, die ich mir angesehen habe, scheint flüssig zu sein.

dank

Antwort

2

Ich habe ein Projekt sowohl mit WPF und WinForms-Steuerelemente. Dieses Projekt hat einen Ressourcenordner, der alle Bilder enthält. Dann lade ich sie einfach über den relativen Pfad von der Festplatte.
Unter der Annahme, dass Ihr Projektname ist „MyProject“ und die Bilder Pfad ist ein Ordner mit dem Namen „MyImages“ innerhalb des Projektordner, und Ihr Bild Name ist „MyImage.bmp“ Sie können sie wie folgt laden:

In WinForms:

new Bitmap(Assembly.GetExecutingAssembly().GetManifestResourceStream("MyProject.MyImages.MyImage.bmp") 

In WPF

<Image Source="pack://application:,,,/MyProject;Component/MyImages/MyImage.bmp"> 

Hoffe, es hilft ...

+0

Ja, ich denke, es tut. Ich könnte beiden einen Helfer hinzufügen, um automatisch festzustellen, welche Ressourcen verfügbar sind, aber Ihre Antwort hat mich beruhigt. Vielen Dank :) – Ian

1

Antwort von Amittai Shapira funktioniert, wenn Build-Aktion auf "Eingebettete Ressource" eingestellt ist. Wenn Sie Maßnahmen gesetzt bauen auf "Ressource", dann könnten Sie verwenden:

WinForms:

Bitmap photo; 
var picUri = new Uri(@"pack://application:,,,/MyProject;component/MyImages/MyImage.bmp", UriKind.Absolute); 
var resourceInfo = Application.GetResourceStream(picUri); 

if (resourceInfo != null) 
{ 
    photo = new Bitmap(resourceInfo.Stream); 
} 

WPF:

<Image Source="MyImages/MyImage.bmp"/> 
Verwandte Themen