Saltar al contenido

Cómo usar Resources.resx para vincular imágenes

Solución:

Aquí hay un truco para acceder a la imagen en el archivo de recursos:

Acceder a la imagen desde el archivo de recursos en el marcado XAML

Primero debe agregar una referencia a las propiedades del proyecto como esta:

xmlns:properties="clr-namespace:MyProject.Properties"

Y luego acceda a él a través de XAML de esta manera:

<image source="{Binding Source={x:Static properties:Resources.ImageName}}" />

Puede usar PNG / JPG / BMP así como un archivo ICO, pero todos recomiendan PNG.

para que la solución de Qorbani funcione, agregue un convertidor a la fuente de imagen.

XAML: espacios de nombres

 xmlns:properties="clr-namespace:YourNameSpace.Properties"
 xmlns:converter="clr-namespace:YourNameSpace.Converter"

Xaml – Recurso (UserControl o Ventana)

 <UserControl.Resources>
        <ResourceDictionary>
              <converter:BitmapToImageSourceConverter x:Key="BitmapToImageSourceConverter" />
        </ResourceDictionary>
 </UserControl.Resources>

Código Xaml

<StackPanel Orientation="Horizontal">
                    <Image Width="32" Height="32" Source="{Binding Source={x:Static properties:Resources.Import}, Converter={StaticResource BitmapToImageSourceConverter}}" Stretch="Fill" />
                    <TextBlock Margin="5" HorizontalAlignment="Center" VerticalAlignment="Center">Import</TextBlock>
</StackPanel>

BitmapToImageSourceConverter.cs

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Windows.Data;
using System.Windows.Media;
using System.Windows.Media.Imaging;

namespace YourNameSpace
{
    public class BitmapToImageSourceConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var bitmap = value as System.Drawing.Bitmap;
            if (bitmap == null)
                throw new ArgumentNullException("bitmap");

            var rect = new Rectangle(0, 0, bitmap.Width, bitmap.Height);

            var bitmapData = bitmap.LockBits(
                rect,
                ImageLockMode.ReadWrite,
                System.Drawing.Imaging.PixelFormat.Format32bppArgb);

            try
            {
                var size = (rect.Width * rect.Height) * 4;

                return BitmapSource.Create(
                    bitmap.Width,
                    bitmap.Height,
                    bitmap.HorizontalResolution,
                    bitmap.VerticalResolution,
                    PixelFormats.Bgra32,
                    null,
                    bitmapData.Scan0,
                    size,
                    bitmapData.Stride);
            }
            finally
            {
                bitmap.UnlockBits(bitmapData);
            }
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}

no puedes hacer eso. que funcionó solo en formas de viento

ver esta publicación para más información

Diferentes formas de agregar imágenes a los recursos.

usa el método que se muestra en esta publicación

Recursos de imágenes de WPF

en lugar de

cita:

Si va a utilizar la imagen en varios lugares, entonces vale la pena cargar los datos de la imagen solo una vez en la memoria y luego compartirlos entre todos. Image elementos.

Para hacer esto, cree un BitmapSource como recurso en alguna parte:

<BitmapImage x:Key="MyImageSource" UriSource="../Media/Image.png" />

Luego, en tu código, usa algo como:

<Image Source="{StaticResource MyImageSource}" />

En mi caso, encontré que tenía que configurar el Image.png archivo para tener una acción de compilación de Resource en lugar de solo Content. Esto hace que la imagen se lleve dentro de su ensamblado compilado.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *