Apunte sobre como establecer una imagen incrustada en un recuso en WPF original
la solución - Pack URIs.
Image finalImage = new Image();
finalImage.Width = 80;
...
BitmapImage logo = new BitmapImage();
logo.BeginInit();
logo.UriSource = new Uri("pack://application:,,,/AssemblyName;component/Resources/logo.png");
logo.EndInit();
...
finalImage.Source = logo;
El URI se divide en partes:- Autoridad:
application:///
- Ruta de acceso: El nombre de un archivo de recursos que se compila en una referencia de ensamblado. La ruta de acceso debe ajustarse al siguiente formato:
AssemblyShortName[;Version][;PublicKey];component/Path
- AssemblyShortName: el nombre corto para la referencia de ensamblado.
- ;Versión [opcional]: la versión de la referencia de ensamblado que contiene el archivo de recursos. Este se utiliza cuando dos o más ensamblados con el mismo nombre corto de la carga.
- ;Clavepublica [opcional]: la clave pública que se utiliza para firmar la referencia de ensamblado. Este se utiliza cuando dos o más ensamblados con el mismo nombre corto de la carga.
- ;componente: especifica que la asamblea se refiere a que se hace referencia desde la asamblea local.
- /Ruta de acceso: el nombre del archivo de recursos, incluyendo su ruta relativa a la raíz de la referencia de ensamblado de la carpeta del proyecto.
Las tres barras diagonales tras
application:
tienen que ser reemplazados con comas:Nota: La autoridad de los componentes de un paquete de URI es un integrado URI que apunta a un paquete y deben cumplir con la RFC 2396. Además, el carácter "/" debe ser reemplazado con el "," carácter", y caracteres reservados como "%" y "?" debe ser escapado. Ver el OPC para obtener más detalles.Y, por supuesto, asegúrese de que configurar la acción de compilación en la imagen para
Resource
.Otro ejemplo.
string packUri = "pack://application:,,,/AssemblyName;component/Images/icon.png";
_image.Source = new ImageSourceConverter().ConvertFromString(packUri) as ImageSource;